文字三劍客之sed

2021-10-01 08:30:43 字數 2015 閱讀 4086

sed是一種流編輯器,能夠完美的配合正規表示式使用。處理時,把當前處理的行儲存在臨時緩衝區中,稱為「模式空間」(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有改變,除非你使用重定向儲存輸出。sed主要用來自動編輯乙個或多個檔案,可以將資料行進行替換、刪除、新增、選取等特定工作。

sed的使用方式有兩種:

#sed的命令格式

sed[options]

'command' file(s)

;#sed的指令碼格式,即將command寫入scriptfile中

sed[options] -f scriptfile file(s)

;

常用的options

command之定位範圍

sed在沒有給定的範圍時,缺省會處理所有行,一旦給點範圍則只會將範圍內的行放入模組空間中,等待處理。

sed支援以下幾種範圍定位

#: 指定行,其中$特指最後一行;

/regexp/:任何能夠被regexp所匹配到的行;

%regexp%:同上,只不過換作%為regexp邊界符;

|%regexp%|:匹配時忽略字元大小寫;

startline,endline:行範圍指定

num1,num2:從num1行到num2行

#,/regexp/:從#行開始,到第一次被/regexp/所匹配到的行結束,中間的所有行;

/regexp1/,/regexp2/:從第一次被/regexp1/匹配到的行開始,到第一次被/regexp2/匹配到的行結束,中間的所有行;

#,+n:從#行開始,一直到向下的n行;

first~step:指定起始行,以及步長; 1~2表示 1,3,5,7,9……行

conmmand之處理操作

#替換文字中的字串:

sed's/book/books/'

file

#-n選項和p命令一起使用表示只列印那些發生替換的行:

sed -n 's/test/test/p'

file

#直接編輯檔案選項-i,會匹配file檔案中每一行的第乙個book替換為books

sed -i 's/book/books/g'

file

#刪除空白行:

sed'/^$/d'

file

#刪除檔案的第2行:

sed'2d'

file

#刪除檔案的第2行到末尾所有行:

sed'2,$d'

file

#刪除檔案最後一行:

sed'$d'

file

#刪除檔案中所有開頭是test的行:

sed'/^test/'d file

#已匹配字串標記&

echo this is a test line |

sed's/\w\+/[&]/g'

[this]

[is]

[a][test]

[line]

#匹配字串分組

echo aaa bbb |

sed's/\([a-z]\+\) \([a-z]\+\)/\2 \1/'

bbb aaa

#在example中所有包含test的行都被寫入file裡:

sed -n '/test/w file' example

#將 this is a test line 追加到 以test 開頭的行後面:

sed'/^test/a\this is a test line'

file

#i\命令 將 this is a test line 追加到以test開頭的行前面:

sed'/^test/i\this is a test line'

file

文字三劍客 sed

sed是linux中支援正規表示式的流編輯器 作用 修改和替換文字 sed擁有兩個兩個空間,分別是pattern space和hold space pattern space是處理資料的地方 注意 每處理一行資料後,模式空間就會清空 hold space是臨時存放資料的地方 模式空間 pattern...

Linux 文字三劍客之 sed

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

Linux shell文字三劍客之sed的使用

sed 能夠對文字檔案進行增刪改查等操作。sed 擁有兩個緩衝區,活躍模式空間 active pattern space 與輔助保持空間 auxiliary hold space 簡稱為活躍區和暫存區,且這兩個緩衝區預設都為空。sed 的基本操作只需要用到活躍區,sed的高階操作需要活躍區與暫存區的...