linux下常見的字符串處理


linux下有許多對字符串文本的處理工具,diff,grep,awk,sed等等。。

diff

比較兩個文件的不同

[root@bogon diff]# diff file1 file2

以高亮的形式在vim編輯器中顯示兩個文件的不同之處

vimdiff

grep

用於匹配字符,或者查找文件中的匹配項

[root@bogon diff]# ls | grep file
file1
file2

重要參數

-i  #忽略大小寫
-n  #顯示結果所在行的行號
-c  #顯示結果個數
-v  #反向過濾
-r + 目錄名       ###在目錄下查找含有關鍵字的內容
-E "關鍵字1|關鍵字2"    ###過濾多個關鍵字

sort

用於排序

-n  #純數字
-r  #倒序顯示
-u  #去掉重復行
-t  #指定分隔符
-k  #指定排序的列

用法實例
sort -t: -k3 -n /etc/passwd
將文本以:為分隔符,以第三列作為(uid)排序標准,-n表示排序是以純數字來排,而不是以字母的順序。

uniq

重復行處理,uniq只會認為連續的重復的行才是重復行。
若想刪除掉所有的重復的行,可以先排序然后uniq

-c #統計重復行的個數
-d #顯示重復行
-u #顯示唯一行

tr

轉換字符大小寫
tr 'a-z' A-Z < 文件名 ##將所有的大寫轉換成大寫
tr -d 關鍵字 文件名 ##將所有關鍵字刪除

sed

sed 's/nologin/login/g' file    #將file文件中的所有nologin替換成login
sed '1,5s/nologin/login/g' file #將1-5行的所有nologin換成login
sed '/games/,/nobody/s/nologin/login/g' file #將games到nobody之間的nologin換成login
sed -e 's/nologin/login/g' -e 's/sbin/bin/g' #多條替換規則一起用
sed 3d file    #不顯示第三行
sed 3,7d file   #不顯示3-7行
sed 3,7p file   #重復顯示3-7行
sed -n 3,7p file  #只顯示3-7行
touch rule        #建立規則文件
sed -f rule file  #使用規則文件更改輸出

以上的操作均不會對原來的文本進行修改,若要修改,需要在前面加上-i參數

awk

awk是一個超強的文本處理工具,甚至可以當做一個腳本語言來使用。這里只介紹一種常用的使用方式,那就是進行字符的分割。
以截取自己的局域網ip為例

[root@linux hexo]# ifconfig wlp1s0
wlp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.103  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::c6d9:87ff:fe5a:68f1  prefixlen 64  scopeid 0x20<link>
        ether c4:d9:87:5a:68:f1  txqueuelen 1000  (Ethernet)
        RX packets 313404  bytes 392626230 (374.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 213498  bytes 26747428 (25.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@linux hexo]# ifconfig wlp1s0|grep -w "inet"
        inet 192.168.1.103  netmask 255.255.255.0  broadcast 192.168.1.255


[root@linux hexo]# ifconfig wlp1s0|grep -w "inet"|awk -F" " '{print $2}'
192.168.1.103

awk 的主要用法 -F參數后面接分隔的字符" "
后面接'{ }' $1 $2..分別代表分隔出來的每一列,print $1 就是輸出這一列

這只是awk的一種用法而已,awk算得上一個腳本語言,有自己獨立的語法,就不一一概述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM