shell編程之sed

1,sed的作用和工作原理:

作用:處理文件內容(增刪改查),學了sed之後可以對較大的文件或者大批量的文件進行高效率的處理。

工作原理:sed讀取一行,首先將這行放入緩存,然後纔對這行進行處理,處理完後,將緩存區的內容發送到終端,其中sed對應的緩存區空間稱爲:模式空間。

2,格式:

sed [選項] [sed命令] [輸入文件]

注意事項:

1,他們之間都有空格,每個元素至少一個空格

2,sed命令是sed軟件的內置命令選項(稱爲sed命令選項是爲了和前面的選項區分),它可以是單個也可以是多個sed命令的組合 (後面我們可以學到用-e選項可以實現組合)

3,sed命令兩邊用'' sed命令前是限制條件。

選項 解釋說明(帶*的爲重點)
 -n 取消默認的sed軟件的輸出,常與sed命令的P連用*
-e  

一行命令語句可以執行多條sed命令   *

-r ruguler 使用擴展正則表達式,默認情況sed只識別基本正則表達式  *
-i  inside

直接修改文件內容,而不是輸出到終端,如果不使用-i選項sed軟件只是修改在內存中的數據,並不會影響磁盤上的文件*

所以seq命令,不使用-i的話,默認不會修改文件內容

sed命令 解釋說明(帶*的爲重點)
a  append 追加,在指定行後再追加一行或多行文本*
i    insert 插入,在指定行前再插入一行或多行文本*
c   chenge 取代,取代指定行
d  delete 刪除指定的行
p  print 打印模式空間內容,通常p會與選項-n一起使用*
特殊符號 解釋說明
! 就像一個sed命令,放在限制條件後面 對指定行以外的所有行應用命令

 

例子:

a:sed '2a cjk' nidaye

i:sed '3i cjk' nidaye

補充:同時增加多行用\n

sed '2a nimei\nimei\nimei' test

匹配的的行:刪除以root開頭的行   #sed '/^root/d' test

指定的行:刪除2到5行以外的行sed '2,5d' test

取反:sed '2,5!d' test

 

改(替換)

例子:將5到9行內容替換爲 cjk

sed '5,9c cjk'  test 

補充文本替換

文本替換

1,選項

這裏用到的sed命令,選項:
“s”:單獨使用-->將每一行中第一處匹配的字符串進行替換==>sed命令
“g”:每一行進行全部替換-->sed命令s的替換標誌之一(全局替換),非sed命令。
“-i”:修改文件內容-->sed軟件的選項,注意和sed命令i區別。

2,格式

sed  -i  ' s/目標內容/替換內容/g'  filename

例子:

將/etc/passwd 中的root 改成ken

sed -i 's/root/ken/g' /etc/passwd

補充

sed -i '1s/root/ken/g' /etc/passwd

查找指定的字符串

打印指定行,第4行。

sed  -n '4p'  test

例子,顯示/etc/passwd中包含root的行(顯示(打印)模式空間中的內容)

方法1 sed  -n '/root/p ' /etc/passwd

補充:-e多點操作

例子:去掉文件中的註釋行和空白行

sed -e '/^#/d' -e '/^$/d'  /etc/passwd

 

 

發佈了83 篇原創文章 · 獲贊 14 · 訪問量 2029
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章