自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

提升效率必備,掌握這些 Shell 文本處理技能!

開發(fā)
雖然 Python 等腳本語言在復(fù)雜任務(wù)中更具優(yōu)勢(shì),但使用 Shell 腳本處理簡(jiǎn)單的文件操作和文本處理依然十分高效。

Shell腳本是Linux系統(tǒng)里的一項(xiàng)基本功,就算它的語法看起來有點(diǎn)奇怪,讀起來也不是特別順暢,但在一些情況下,它仍然是最能干的解決辦法。學(xué)好Shell腳本,不僅讓你對(duì)Linux系統(tǒng)了解更深,還能讓你手快地做好很多日常任務(wù)。

在這篇文章里,我會(huì)跟你分享在Linux Shell里處理文字時(shí)最常使用的幾個(gè)“利器”:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed和awk,而且每個(gè)都會(huì)配上實(shí)用的例子。我們的目標(biāo)是讓腳本簡(jiǎn)單直白,最好一行命令或者兩行就搞定。

一、找文件的小能手

find是個(gè)找文件的小能手,本事大得很,不管文件躲在哪個(gè)角落,它都能幫你把它揪出來。

1.查找指定類型文件

查找 .txt 和 .pdf 文件:

find . \( -name "*.txt" -o -name "*.pdf" \) -print

使用正則表達(dá)式查找 .txt 和 .pdf:

find . -regex ".*\(\.txt|\.pdf\)$"

-iregex:忽略大小寫的正則。

2.查找特定條件的文件

查找最近 7 天被訪問的文件:

find . -atime -7 -type f -print

查找大于 2K 的文件:

find . -type f -size +2k

3.后續(xù)操作

刪除 .swp 文件:

find . -type f -name "*.swp" -delete

將 10 天前的 .txt 文件拷貝到 OLD 目錄:

find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \;

二、文本搜索神器

grep是個(gè)超級(jí)好用的工具,專門用來在大量文字中找到你需要的內(nèi)容。

1.常用選項(xiàng)

只顯示匹配行:

grep "pattern" file

統(tǒng)計(jì)匹配次數(shù):

grep -c "pattern" file

打印匹配行的行號(hào):

grep -n "pattern" file

遞歸搜索:

grep -r "pattern" .

2.擴(kuò)展功能

多模式匹配:

grep -e "pattern1" -e "pattern2" file

查找并刪除文件:

grep "pattern" file* -lZ | xargs -0 rm

三、命令行高效參數(shù)處理器

xargs 具有將命令輸出作為后續(xù)命令行參數(shù)的功能,從而實(shí)現(xiàn)了多個(gè)命令的高效與靈活鏈?zhǔn)綀?zhí)行。

實(shí)用示例

多行輸出轉(zhuǎn)為單行:

cat file.txt | xargs

將文件中的每一行傳遞給腳本:

cat file.txt | xargs -I {} ./script.sh -p {}

統(tǒng)計(jì) .cpp 文件中的行數(shù):

find . -name "*.cpp" -print0 | xargs -0 wc -l

四、排序與去重

進(jìn)行數(shù)據(jù)去重與排序操作:利用 sort 命令實(shí)現(xiàn)數(shù)據(jù)的有序排列,而采用 uniq 工具則旨在消除序列中的冗余重復(fù)項(xiàng),從而達(dá)到精簡(jiǎn)數(shù)據(jù)集的目的。

1.排序

按數(shù)字降序排序:

sort -nrk 1 data.txt

2.去重

去除重復(fù)行:

sort file.txt | uniq

統(tǒng)計(jì)每行出現(xiàn)的次數(shù):

sort file.txt | uniq -c

五、字符轉(zhuǎn)換

tr是一個(gè)在Unix和Linux操作系統(tǒng)中廣泛使用的命令行工具,其全稱為"translate"。該工具主要用于對(duì)來自標(biāo)準(zhǔn)輸入或指定文件的字符進(jìn)行替換、刪除或壓縮操作。

基本語法結(jié)構(gòu)如下:

tr [選項(xiàng)] 從字符集 到字符集
  • 從字符集 指定了需要被轉(zhuǎn)換或刪除的原始字符。
  • 到字符集 指定了轉(zhuǎn)換目標(biāo)字符或操作(如果只想刪除字符,則此部分可省略)。

基礎(chǔ)用法

例如,以下命令將把輸入文本中的所有小寫字母轉(zhuǎn)換為大寫字母:

echo "hello world" | tr 'a-z' 'A-Z'

另一個(gè)例子是刪除文本中的所有數(shù)字:

echo "Example123 text." | tr -d '0-9'

tr命令還支持一些選項(xiàng)來擴(kuò)展其功能,如-d用于刪除字符,而不是轉(zhuǎn)換它們;-s用于壓縮連續(xù)重復(fù)的字符為一個(gè)。

六、按列切割文本

cut`是 Linux 中用于按列截取文本的命令。它通過指定分隔符(默認(rèn)為制表符)來選擇并提取文件中的特定字段或字符。它常用于處理結(jié)構(gòu)化數(shù)據(jù),如 CSV 文件,快速提取有用的信息。

基本操作

截取第 2 和第 4 列:

cut -f2,4 filename

排除第 3 列:

cut -f3 --complement filename

七、按列拼接文本

paste命令用于將多個(gè)文件的內(nèi)容按列拼接在一起,生成一個(gè)新的輸出。它會(huì)逐行讀取每個(gè)文件,并將相應(yīng)行的內(nèi)容用制表符(默認(rèn))或指定的分隔符連接起來。常見用法包括將兩個(gè)文件橫向拼接在一起,或?qū)蝹€(gè)文件的多列數(shù)據(jù)合并。

基本用法

將兩個(gè)文本按列拼接到一起

cat file1 file2
colin
book

默認(rèn)的定界符是制表符,可以用-d指明定界符。

paste file1 file2 -d ','
colin,book

八、統(tǒng)計(jì)行、詞和字符數(shù)

wc(word count)是一個(gè)用于統(tǒng)計(jì)文件內(nèi)容的命令行工具,能夠統(tǒng)計(jì)文件中的行數(shù)、單詞數(shù)、字符數(shù)等信息。常見用法包括統(tǒng)計(jì)行數(shù)wc -l、單詞數(shù)wc -w以及字符數(shù)wc -m。它可以處理多個(gè)文件,并在終端中輸出每個(gè)文件的統(tǒng)計(jì)結(jié)果,通常用于文本分析和簡(jiǎn)單的文件內(nèi)容審計(jì)。

基本用法

統(tǒng)計(jì)行數(shù):

wc -l file

統(tǒng)計(jì)單詞數(shù):

wc -w file

九、流編輯器

sed(Stream Editor)是一個(gè)輕量級(jí)、強(qiáng)大的文本處理工具,適用于在流式數(shù)據(jù)或文件中進(jìn)行快速的查找、替換、刪除、插入等操作。它以非交互的方式逐行處理文本,支持正則表達(dá)式,常用于批量編輯和轉(zhuǎn)換文件內(nèi)容。sed的常見用途包括替換字符串、刪除或提取特定行、插入文本等,非常適合需要在命令行中對(duì)文件進(jìn)行簡(jiǎn)單編輯的場(chǎng)景。

1.文本替換

替換每行的第一個(gè)匹配項(xiàng):

sed 's/old/new/' file

全局替換:

sed 's/old/new/g' file

2.其它操作

移除空行:

sed '/^$/d' file

十、文本處理利器

awk 是處理結(jié)構(gòu)化文本的強(qiáng)大工具,支持復(fù)雜的模式匹配和數(shù)據(jù)處理。

1.基本用法

打印每行的第二個(gè)字段:

awk '{print $2}' file

統(tǒng)計(jì)行數(shù):

awk 'END {print NR}' file

過濾并打印匹配的行:

awk '/pattern/' file

2.進(jìn)階功能

按范圍打?。?/p>

awk 'NR==4,NR==6{print}' file

格式化輸出:

seq 10 | awk '{printf "->%4s\n", $1}'

總結(jié)

雖然 Python 等腳本語言在復(fù)雜任務(wù)中更具優(yōu)勢(shì),但使用 Shell 腳本處理簡(jiǎn)單的文件操作和文本處理依然十分高效。本文介紹的這些工具都是非常基礎(chǔ)且實(shí)用的命令,希望能幫助你快速提升在 Linux 下的操作效率。

責(zé)任編輯:趙寧寧 來源: 攻城獅成長(zhǎng)日記
相關(guān)推薦

2017-03-02 18:10:20

LinuxShell命令

2024-11-06 17:04:47

AWK編程

2010-07-21 10:05:13

Perl文本處理模塊

2013-10-30 10:35:29

Linux命令文本處理

2021-09-10 16:30:29

LinuxShell文本

2021-01-28 08:12:15

Linux命令技巧

2013-08-20 16:14:46

pythonpython文本處理

2019-10-14 11:31:51

工具代碼開發(fā)

2025-03-11 14:09:04

2010-01-06 17:12:26

.Net Framew

2024-04-12 12:14:39

Rust字符串代碼

2024-03-06 15:57:56

ShellLinux

2023-12-31 16:23:39

KubernetesPod容器

2019-06-10 13:50:08

Linux命令shell

2023-09-21 23:05:50

jiebaPython

2019-10-29 09:20:48

Python文本正則表達(dá)式

2024-11-21 13:02:42

2024-03-11 00:02:00

tr命令文本處理命令字符

2023-10-07 08:25:09

Java處理工具正則表達(dá)式

2022-12-29 15:20:34

開發(fā)工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)