2021-05-12 14:32:11
Linux文字處理工具及grep
常見的文字處理工具
在日常的Linux運維工作當中,我們經常要在一些文字當中抽取過濾出我們所需要的資訊,從而達到我們的需求,需要特定的文字處理工具來幫我們完成此類操作
本章節主要講解的內容有:
檔案檢視:cat
分頁檢視文字:less、more
抽取檔案特定行數:head、tail
抽取文字特定列:cut
合併文字:paste
文字統計:wc
文字排序並統計:sort、uniq
比較檔案:diff、patch
cat:連結檢視文字和輸出至標準輸出
-n:為每行新增行號
-A:顯示所有控制符
-E:為每行顯示結束符$
-s:壓縮重複的空白行
-b:非空行進行編號
[root@CentOS6 ~]# cat -A test.txt #顯示所有控制字元
one$
two$
$
three$
$
[root@CentOS6 ~]# cat -E test.txt #在每行結尾新增$符
one$
two$
$
three$
$
[root@CentOS6 ~]# cat -b test.txt #非空行編號
1one
2two
3three
[root@CentOS6 ~]# cat -n test.txt #顯示行號
1one
2two
3
4three
5
[root@CentOS6 ~]# cat -s test.txt #壓縮空白行
one
two
three
[root@CentOS6 ~]#
nl:將檔案每行新增行號顯示
tac:逆序顯示檔案內容
rev:反向顯示檔案內容
more: 分頁檢視檔案
more [OPTIONS...] FILE...
-d: 顯示翻頁及退出提示
less:一頁一頁檢視文字檔案
檢視時有用的命令包括:
/文字搜尋文字
n/N跳到下一個or 上一個匹配
head:抽取文字前n行
-n #:抽取文字前#行
-c #:抽取文字前#個位元組7
-#:指定行數
tail:抽取文字後n行
-n #:抽取文字後#行
-#:指定行數
-c #:抽取文字後#個位元組
-f:追蹤文字新新增的內容,不退出文字
[root@CentOS6 ~]# head -3 /etc/passwd #抽取文字的前三行
[root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@CentOS6 ~]# tail -3 /etc/passwd #抽取文字的後三行
nologin:x:510:514::/home/nologin:/sbin/nologin
mage:x:511:515::/home/mage:/bin/bash
wang:x:512:516::/home/wang:/bin/bash
[root@CentOS6 ~]# head -c 100 /etc/passwd #抽取文字前100個位元組
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nol[root@CentOS6 ~]#
[root@CentOS6 ~]# tail -c 100 /etc/passwd #抽取文字後100個位元組
ome/nologin:/sbin/nologin
mage:x:511:515::/home/mage:/bin/bash
wang:x:512:516::/home/wang:/bin/bash
[root@CentOS6 ~]#
cut:抽取文字
-d DELIMITER:指明分隔符,預設tab
-f FILEDS:
#:第#個欄位
#,#:離散表示法,例如1,3,5
#-#:連續表示法,例如1-3
#,#-#,#:混合表示法例如,1,3-5,7
-c:按字元切割
--output-delimiter:指定輸出分隔符
123456789 [root@CentOS6 ~]# cat test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@CentOS6 ~]# cut -d: -f1,3 test.txt #以:為分隔符,抽取文字的第1,3列
root:0
bin:1
daemon:2
[root@CentOS6 ~]#
paste:合併文字
-d DELIMITER:指定輸出分隔符
-s:所有行顯示為一行
[root@CentOS6 ~]# paste issue test.txt #將兩個文字內容合併
CentOS release 6.8 (Final)root:x:0:0:root:/root:/bin/bash
Kernel r on an mbin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@CentOS6 ~]# paste -s issue test.txt #一個文字內容顯示為一行
CentOS release 6.8 (Final)Kernel r on an m
root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@CentOS6 ~]#
wc:文字統計
-c:統計位元組數
-l:統計行數
-w:統計單詞書
-m:統計位元組數
[root@CentOS6 ~]# wc -l /etc/passwd #統計行數
47 /etc/passwd
[root@CentOS6 ~]# wc -w /etc/passwd #統計單詞數
67 /etc/passwd
[root@CentOS6 ~]# wc -m /etc/passwd #統計位元組數
2143 /etc/passwd
[root@CentOS6 ~]# wc -c /etc/passwd #統計位元組數
2143 /etc/passwd
[root@CentOS6 ~]#
sort:文字排序
-u:重複的行只出現一次
-r:逆序排序
-n:按數位從小到大排序
-f:忽略大小寫
-t DELIMITER:指明分隔符
-k #:按照指定的分隔符來指定列
[root@CentOS6 ~]# cat test.txt
1
1
2
1
3
[root@CentOS6 ~]# sort -u test.txt #重複的行只顯示一次
1
2
3
[root@CentOS6 ~]# sort -n test.txt #數位從小到大排序
1
1
1
2
3
[root@CentOS6 ~]# sort -r test.txt #逆序排序
3
2
1
1
1
[root@CentOS6 ~]# sort -t' ' -k1 -n test.txt #對指定的列排序
1
1
1
2
3
[root@CentOS6 ~]#
uniq:統計重複的行
-c:顯示重複行的重複次數
-d:僅顯示重複過的行
-u:顯示不曾重複的行
一般和sort命令搭配使用
[root@CentOS6 ~]# cat test.txt
1
1
2
1
3
[root@CentOS6 ~]# uniq -c test.txt #顯示重複行的重複次數
2 1
1 2
1 1
1 3
[root@CentOS6 ~]# uniq -d test.txt #僅顯示重複的行
1
[root@CentOS6 ~]# uniq -u test.txt #顯示不曾重複的行
2
1
3
[root@CentOS6 ~]#
diff:比較兩個檔案的區別
以逐行的方式比較兩個檔案的不同之處
diff /PATH/TO/OLDFILE /PATH/TO/NEWFILE > /PATH/TO/PATHCH_FILE
-u:使用unfied機制,即顯示要修改的行的上下文,預設為三行
patch:向檔案打修補程式
path [OPTIONS] -i /PATH/TO/PATCH_FILE /PATH/TO/OLDFILE
patch /PATH/TO/OLDFILE < /PATH/TO/PATCH_FILE
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2017-03/142277p2.htm
相關文章