Linux 文字處理工具

Je_suis_Lulu發表於2017-05-03

 文字處理工具

一、diff命令:用來比較兩個檔案的不同

1.編輯兩個內容不完全相同的檔案

[root@localhost ~]# cd /mnt

[root@localhost mnt]# vim first

[root@localhost mnt]# vim second

[root@localhost mnt]# cat first

linux westos

[root@localhost mnt]# cat second

linux westos

redhat

2.使用diff命令進行比較

[root@localhost mnt]# diff firstsecond   #結果顯示檔案中不同的內容

1a2

> redhat   #不同內容

[root@localhost mnt]# diff -c firstsecond  #檢視檔案不同位置的上下行

*** first  2017-04-2921:13:54.613839495 -0400

--- second       2017-04-2921:14:17.441839495 -0400

***************

*** 1 ****

--- 1,2 ----

 linux westos

+ redhat #不同內容

[root@localhost mnt]# diff -u firstsecond  #按一定格式比較

--- first    2017-04-2921:13:54.613839495 -0400

+++ second     2017-04-2921:14:17.441839495 -0400

@@ -1 +1,2 @@

 linux westos

+redhat

3.生成補丁檔案

[root@localhost mnt]# diff -u first second> first.path  #生成補丁檔案

[root@localhost mnt]# ls

first first.path  second  #first.path為補丁檔案

4.使用補丁檔案對系統中相似檔案進行更改

(1)先下載patch軟體包

  yuminstall patch -y

(2)patch firstfirst.path  #檔案內容更改,

如下:原檔案內容將改變

(3)patch -b first first.path  #將原檔案備份,再進行修補

[root@localhost mnt]# patch firstfirst.path -b

patching file first

[root@localhost mnt]# ls

first first.orig  first.path  second #firest.orig為原檔案的備份檔案

[root@localhost mnt]# cat first

linux westos

redhat

[root@localhost mnt]# cat first.orig  #備份檔案內容即為原檔案內容

linux westos

二、grep查詢關鍵字

1.檔案內容中查詢關鍵字

grep   關鍵字   檔名 #精準查詢對對應的關鍵字

grep   -i   關鍵字  檔名 #粗略查詢,包含大小寫

grep   -i   關鍵字  檔名 -v  #查詢相反項

grep    -i    -E    “關鍵字|關鍵字2”    檔名  #過濾各個關鍵字

grep    -i    -E    "^關鍵字1|關鍵字2$"   檔名  #過濾以關鍵字1開始並以關鍵字2結束的內容,可獨立使用

grep   -i   -E   "^關鍵字1|關鍵字2$"   檔名 -v  #反向:過濾出不以關鍵字1開始或不以關鍵字2結束的內容

grep   關鍵字  檔名 -c  #關鍵字出現的總行數

grep   關鍵字  檔名 -n  #關鍵字出現再第幾行

2.查詢目錄中包含某關鍵字的檔案

grep   -r   關鍵字  目錄名  #在目錄中查詢含有某關鍵字的檔案

grep   -r   關鍵字  目錄名 -n #關鍵字出現在哪個檔案的第幾行

grep   -r   關鍵字  目錄名 -c  #關鍵字在目錄中各個文家出現的總行數

三、cut命令

1.cut   -f  #顯示指定的列

  cut  -d  :  -f  <number>   檔名  #指定分隔符是“:”,擷取第幾列

如:cut   -d  :  -f1   檔名  #從檔案中擷取第一段

cut   -d  :   -f   1,3   檔名  #擷取第1段和第3段

cut   -d   :   -f   1-3   檔名  #擷取1到3段

cut   -c   1-3   檔名  #擷取1到3列字元

cut   -d     “  “     -f               #指定分隔符是空格,擷取某些段

四、sort命令--排序

1.sort     檔名                         #將檔案按第一列字元排序

 sort    -r    檔名                       #將檔案按第一列字元倒序排序

2.sort    -n   檔名                   #將檔案內容排序(順序)

 sort    -nr    檔名                  #將檔案按逆序排序

3.sort   -u    檔名                   #檔案內容按第一列字元排序,重複的內容將只顯示一次

4.sort    排序方式    檔名 |   unip   -c                       #排序,重複的內容只顯示一次,並且顯示重複個數

  其中:uniq   -c                           #刪除重複的行,且顯示重複次數


5.sort   -t   間隔符   -k   <number>   排列方式              #以間隔符為間隔,按第幾段由某排序方式進行排序

6.sort  排序方式 檔名 | uniq -d  #將檔案中重複的內容進行排序

  uniq -d   #顯示重複行

7.使用sort來篩選程式資訊

五、tr 命令--字元轉換

1.將檔案中小寫轉換成小寫

  tr   'a-z'    'A-Z'    <   檔名

2將檔案只大寫轉換成大寫

  tr  'A-Z'   'a-z'   <   檔名

六、sed命令--非互動式轉換字元

1.全文的字元轉換實現

 (1)sed   's/原字串/新字串/g'    檔名               ##檔案實際內容不改變

  sed    's/原字串/新字串/g'   檔名   -i                     ##檔案內容改變

(2) sed  's/原字串/新字串/'  檔名       ##每行第一次出現的原字串被轉換,實際內容不變

2.檔案中多個字串的轉換

(1)sed -e  's/原字串/新字串/g'  -e  's/原字串/新字串/g' 檔名                 #檔案內容不作更改

     -e                #表示先執行一條轉換命令,再執行下一條轉換命令,及完成兩條命令連線

(2)sed -e 's/原字串/新字串/g' -e 's/原字串/新字串/g' 檔名 -i  #檔案內容被更改

3.非互動式轉換字元

  vim檔名

 s/原字串/新字串/

 s/原字串/新字串/

 ...

 :wq

呼叫命令格式如下:

 sed  -f   檔名   需更改的檔名    ##檔案內容不作更改

 sed  -f   檔名   需更改的檔名 -i           #檔案內容被更改

4.sed   '數1,數2/原字串/新字串/g'   檔名    #第幾行至第幾行都被更改

  sed   -e    '數1/原字串/新字串/g'   -e   '數2/原字串/新字串/g'   -e ...  檔名     #分別更改指定行且內容不作更改

5. sed   數x    檔名                   #遮蔽第幾行不顯示

  sed   數d   檔名                      #刪除第幾行

  sed   -n   數p   檔名               #只顯示第幾行

  sed  -n   數1,數2p   檔名                                        #顯示數1至數2行

  sed  -ne   數1p    -ne   數2p   -ne ... 檔名                 #顯示指定的行

七、awk命令

  awk-F 間隔符 '{printf $數字}' 檔名              #以空格符為間隔符,顯示指定的某列

 

相關文章