Linux 中常用的文本(行)處理命令
0、正則表達(dá)式(regular expression)
元字符(如下圖)是正則表達(dá)式中含有的字符,在正則表達(dá)式中可以在字符串中使用元字符以匹配字符串的各種可能的情況。
注意:
(1) 在“[ ]”中還可以使用“-”來表示某一范圍。例如“[a-z0-9]”匹配任意的小寫字母或者數(shù)字,“[^A-Z]”表示非大寫字母,“[0-9]{8}”表示任意一個(gè)8位數(shù)字。
(2) 元字符還可以配合使用:
“.*”可以匹配任意個(gè)字符,如“r.*d”會(huì)匹配“rd”、“red”、“read”。
“.+”可以匹配任意的一個(gè)或者多個(gè)字符,如“r.+d”會(huì)匹配“red”、“read”,但不會(huì)匹配“rd”。
“.?”可以匹配任意的零個(gè)或一個(gè)字符,如“r.?d”會(huì)匹配“rd”、“red”,但不會(huì)匹配“read”。
“^$”匹配空白行。
(3) 在[ ]中還可以使用一些特殊匹配模式,如下表:

以“\”開頭得元字符
1、grep命令
命令說明:按行處理,輸出文件中包含搜索字符串的所有行。
格式:grep [-acinv] ‘搜索字符串’ filename
參數(shù)說明:
-a:在二進(jìn)制文件中,以文本文件的方式搜索數(shù)據(jù);
-c:計(jì)算找到“搜索字符串”的次數(shù);
-i:忽略大小寫;
-n:輸出行號;
-v:反向選擇;
-E:擴(kuò)展正則表達(dá)式例子:在文件a.txt中搜索包含字符串good或glad的行:
grep -E 'g(oo|la)d' a.txt
找到以字母a結(jié)尾的單詞:
grep -E 'a[[:blank]]' a.txt
grep -E 'a\\b' a.txt2、find命令
命令說明: 查找符合條件的文件
格式:find [path] [options][tests] [actions]
參數(shù)說明:
3、cut命令
命令說明:按行處理,將一行消息的某段切出來。格式:cut -d '分割字符' -f fields
cut -c m-n
例如: echo $PATH | cut -d ':' -f 3,5 ,取出環(huán)境變量PATH中的第3個(gè)和第5個(gè)路徑。
echo $PATH | cut -d ':' -f 3-5 ,取出環(huán)境變量PATH中的第3個(gè)到第5個(gè)路徑。
export | cut -c 12- , 將export中的每行的前面11個(gè)字符刪除留,保留從第12個(gè)字符開始的所有字符。
4、awk工具
命令說明: 將一行消息分成數(shù)個(gè)段來處理,適合處理小型的數(shù)據(jù)。
格式:awk '條件類型 {動(dòng)作}' file
awk的內(nèi)置變量:
$n:該行的第n個(gè)字段;
NF:每一行擁有的字段總數(shù);
NR:當(dāng)前行的行號;
FS:分隔符,默認(rèn)為空格鍵;
例如: cat /etc/passwd | awk 'BEGIN {FS=":"} $S3<10 {print $1 "\t" $3}' ,打印passwd文件第三欄小于10的行的第1、3欄。
5、sed工具
命令說明: 分析STDIN的數(shù)據(jù),將數(shù)據(jù)處理后,輸出到STDOUT。
格式:sed [-nefr] 動(dòng)作
參數(shù)說明:
-n:安靜模式,僅顯示經(jīng)過sed特殊處理的行;
-e:直接在命令行模式進(jìn)行sed的操作編輯;
-f file:將sed操作寫在一個(gè)文件中;
-r:支持?jǐn)U展正則表達(dá)式語法;
動(dòng)作說明:[n1[, n2]] functions
其中,n1和n2代表“選擇進(jìn)行操作的行數(shù)”,function有下面這些操作:
a:新增,
例如:
nl /etc/passwd | sed '2a Hello World'
,在
/etc/passwd第2行下面新增一行,寫入"Hello World"。
i:插入,例如:
nl /etc/passwd | sed '2i Hello World'
,在
/etc/passwd第2行上面新增一行,寫入"Hello World"
d :刪除,例如: nl /etc/passwd | sed '2,5d' ,刪除/etc/passwd中的第2至5行。
p :打印,例如: nl -n /etc/passwd | sed '2,5p' ,僅顯示2到5行,注意,如果不加-n,2到5行將重復(fù)輸出。
s :搜索,例如: nl /etc/passwd | sed '1,20s/old/new/g' ,將第1~20行中出現(xiàn)的所有字符串old替換為new。
6、sort命令
命令說明:將文本文件的內(nèi)容按行排序。
格式:sort [-fbMnrtuk] [file or stdin]
參數(shù)說明:
-f:忽略大小寫;
-b :忽略最前面的空格;
-u :即uniq,重復(fù)行僅出現(xiàn)一次;
-M :以月份的名字來排序;
-n :使用“純數(shù)字”來排序;
-r :反向排序;
-t :分隔符,默認(rèn)為tab鍵;
-k :按指定字段排序;例如: cat /etc/passwd | sort -t ':' -k 3 ,對文件/etc/passwd以第三欄排序。
7、uniq命令
命令說明:如果排序完成了,將重復(fù)的行僅顯示一次。注意,若文件未排序,該命令失效。
格式:uniq [-ic]
參數(shù)說明:
-i:忽略大小寫;
-c:統(tǒng)計(jì)每行重復(fù)的次數(shù);
8、wc命令
命令說明:統(tǒng)計(jì)文本文件中有多少字,多少行,多少字符。格式:wc [-lwm]
參數(shù)說明:
-l:僅顯示行數(shù);
-w:僅顯示字?jǐn)?shù)(英文單詞個(gè)數(shù));
-m:字符數(shù);
9、tee命令
命令說明:雙向重導(dǎo)向,從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù),輸出到屏幕上,同時(shí)保存成文件。格式:tee [-a] file
參數(shù)說明:
-a:以累加的方式,將數(shù)據(jù)加入到file中。
例如: ls -al /home | tee ~/myfile | more ,將ls命令的數(shù)據(jù)存一份到myfile中,同時(shí)屏幕也有輸出數(shù)據(jù)。
10、tr命令
命令說明:單個(gè)字符的處理工具,可以用于刪除字符、替換字符等基本功能。更復(fù)雜的字符串處理工具通常使用sed。格式:tr [-ds] SET1....
參數(shù)說明:
-d:刪除,例如: cat file | tr -d '\r' ,相當(dāng)于dos2unix命令所起的作用。
-s:替換字符,例如: cat file | tr -s [0-9] ,如果某個(gè)數(shù)字連續(xù)出現(xiàn),僅保留第一個(gè)。
cat file | tr [a-z] [A-Z] ,將file中的小寫字符全部改為大寫。
11、col命令
命令說明:格式化顯示列。格式:col [-x]
參數(shù)說明:
-x:將tab鍵轉(zhuǎn)換成對等的空格鍵;
例如: cat -A /etc/man.config | col -x | cat -A ,使用cat -A,tab鍵會(huì)以^I顯示,經(jīng)過col -x處理,tab替換為空格。
12、expand命令
命令說明:將tab鍵轉(zhuǎn)換成空格鍵。格式:expand [-t] file
參數(shù)說明:
-t n:后面可以接一個(gè)數(shù)字n,一個(gè)tab鍵替換為n個(gè)空格鍵,默認(rèn)值為8。
13、join命令
命令說明:處理兩個(gè)文件中有相同數(shù)據(jù)的行,將它們加在一起。格式:join [-ti12] file1 file2
參數(shù)說明:
-i
:忽略大小寫;
-t:分隔符,默認(rèn)為空格符;
-1 m
:指定file1用來比較的字段m,默認(rèn)值為1;
-2 n
:指定file2用來比較的字段n,默認(rèn)值為1;
命令說明:比較兩個(gè)文件的數(shù)據(jù)關(guān)聯(lián)性,直接將“兩行貼在一起”,中間以tab鍵隔開。
格式:paste [-d] file1 file2
參數(shù)說明:
-d:后面接分隔符,默認(rèn)為tab鍵。
15、diff命令
命令說明:以
“行”
為單位進(jìn)行文件比較,一般用在ASCII純文本文件。
格式:diff [-bBi] file1 file2
參數(shù):
-b:忽略一行中有多個(gè)空白的差異;
-B:忽略空白行的不同;
-i:忽略大小寫;
16、cmp命令
命令說明: 以“位”為單位進(jìn)行文件比較,可以比較二進(jìn)制文件。格式:cmp [-s] file1 file2
參數(shù):
-s:將所有不同點(diǎn)的位都列出來,默認(rèn)僅輸出第一個(gè)發(fā)現(xiàn)的不同點(diǎn);
17、patch命令
命令說明:diff old new > patch_file命令可以找出new文件與old文件不同的地方,然后用patch命令給old文件打上補(bǔ)丁,即與new文件相同了。格式:patch -pN < patch_file
參數(shù):-pN表示取消N層目錄。
18、split命令
命令說明:將一個(gè)大文件拆分為幾個(gè)小文件。格式:split [-bl] fle
參數(shù)說明:
-b:拆分的文件大小,可加單位,如b, k, m等;
-l:按行數(shù)進(jìn)行拆分;
例如: split -b 512k bigfile smallfile ,將文件bigfile按512K拆分,拆分后的文件依次為:smallfileaa、smallfileab等。
split -l 10 bigfile smallfile ,將文件bigfile中的每10行拆分成一個(gè)小文件。
19、xargs命令
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
