首頁 > 軟體

Linux文字處理工具及grep

2020-06-16 17:18:14

常見的文字處理工具
在日常的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 


IT145.com E-mail:sddin#qq.com