Linux三劍客之sed實戰

2021-09-23 14:17:25 字數 2773 閱讀 6920

sed是linux中一種流編輯器,是文字處理非常有力的工具,支援將資料進行替換、刪除、新增、選取等功能。首先將決定選取哪些行進行編輯,規則可以是數字、正規表示式等,若沒有限制,則將處理輸入檔案的所有行。在處理時,將當前行儲存在臨時快取區中,稱為」模式空間「,然後使用sed指令處理緩衝區的內容,處理成功後,把緩衝區的內容輸出到螢幕上。

sed [-nefri] 動作
test.txt檔案內容如下:

1,20,i

2,30,hello

3,21,am

4,32,world

5,43,yu

6,21,yuakw

7,22,zhanyu

sed -n '3,6p' test.txt
3,21,am

4,32,world

5,43,yu

6,21,yuakw

sed -n '/21/p' test.txt
3,21,am

6,21,yuakw

sed -n '/21/,/yu/p' test.txt
3,21,am

4,32,world

5,43,yu

6,21,yuakw

7,22,zhanyu

sed -n -e '/21/p' -e '/21/=' test.txt
3,21,am

36,21,yuakw

6

sed 's/yu/111/g' test.txt
1,20,i

2,30,hello

3,21,am

4,32,world

5,43,111

6,21,111akw

7,22,zhan111

sed -n '$p' test.txt
7,22,zhanyu
sed -e '1i hi' -e '$a world' test.txt
hi

1,20,i

2,30,hello

3,21,am

4,32,world

5,43,yu

6,21,yuakw

7,22,zhanyu

world

sed '1,4i haha' test.txt
haha

1,20,i

haha

2,30,hello

haha

3,21,am

haha

4,32,world

5,43,yu

6,21,yuakw

7,22,zhanyu

sed '2,4d' test.txt
1,20,i

5,43,yu

6,21,yuakw

7,22,zhanyu

sed -i '2,6 s/yu/zhan/g' test.txt
[yuzhan]$ cat test.txt 

1,20,i

2,30,hello

3,21,am

4,32,world

5,43,zhan

6,21,zhanakw

7,22,zhanyu

sed '/am/ r a.txt' test.txt
[yuzhan]$ cat a.txt 

qqq 222

www 111

[yuzhan]$ sed '/am/ r a.txt' test.txt

1,20,i

2,30,hello

3,21,am

qqq 222

www 111

4,32,world

5,43,zhan

6,21,zhanakw

7,22,zhanyu

sed '/am/ w a.txt' test.txt
[yuzhan]$ cat a.txt 

3,21,am

sed 's/yu/zhan_&/g' test.txt
1,20,i

2,30,hello

3,21,am

4,32,world

5,43,zhan_yu

6,21,zhan_yuakw

7,22,zhan_yuzhan_yu

find . -name  "*.txt" |xargs sed -i 's/zhan/yu/g'
1,20,i

2,30,hello

3,21,am

4,32,world

5,43,yu

6,21,yuakw

7,22,yuyu

八 Linux三劍客之sed

處理文字檔案的命令 引數說明 動作說明 c 取代,c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!d 刪除,d 後面通常不接任何字串 p 列印,將某個選擇的資料印出。通常 p 會與引數 sed n 一起使用 s 取代,搭配正規使用,例如 1,20s old new g 案例在testf...

Linux 文字三劍客之 sed

linux 系統中一切皆檔案。檔案是個文字。可以讀 可以寫,如果是二進位制檔案,還能執行。在使用linux的時候,大都是要和各式各樣檔案打交道。熟悉文字的讀取 編輯 篩選就是linux系統管理員的必備技能 文字處理工具 grep awk sed,本篇主要講sed sed行編輯命令。用來將資料進行選取...

文字三劍客之sed

sed是一種流編輯器,能夠完美的配合正規表示式使用。處理時,把當前處理的行儲存在臨時緩衝區中,稱為 模式空間 pattern space 接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有改變,除非你使用重定向儲存輸出。...