本文首先以一個簡單的sed命令應用示例,說明如何使用sed命令進行文本處理,接著從sed命令的用法、工作原理、行地址模式以及sed命令支持的腳本命令詳細介紹sed命令的用法。
一個完整的sed命令使用簡單示例
現在有一個待處理文件test.txt,文件中包含一系列的位圖數據1和0,它們位於<Figure Begin>和<Figure End>之間,需要將它們寫入一個單獨的文件,並使用.FG <insert figure here> .FE替換著部分內容。替換輸入文件中的<para> 標識為.LP並刪除其下的空行。最後,刪除輸入文件中的所有空行。
處理文件內容如下:cat test.txt
- <para>
-
-
- This is a test paragraph.
-
-
- <Figure Begin>
-
-
- 111111111111111101000000000000000000000000000000111111111111111111100000000
- 000000000000000000000000000000000001111111111111111111111111111111111111111
- 11111111111111111110000000000000000000
-
-
- <Figure End>
-
-
- <para>
-
-
- MOre lines of text to be found after the figure.
- These lines should print.
sed腳本命令內容及解釋如下:cat sedscr
- /<para>/{
- N #讀入下一行,因為下一行為空行,
- c\ #使用下面的內容替換模式空間中的內容,之所以使用N命令,也是想把<para>下面的空行刪除
- .LP
- }
- /<Figure Begin>/,/<Figure End>/{ #匹配<Figure Begin>到<Figure End>行之間的內容
- w fig.test #將這部分中的當前模式空間中的內容寫入文件fig.test中,因為sed命令式按行讀取文件內容的
- /<Figure End>/i\ #在<Figure End>行前插入下面的內容
- .FG\
- <inset figure here>\
- .FE
- d #刪除匹配的行,即刪除模式空間中的內容,這樣模式空間中的這部分內容不會被輸出
- }
- /^$/d #刪除所有空行
sed腳本執行命令:sed -f sedscr test.txt
sed腳本執行完成後輸出內容如下:
- .LP
- This is a test paragraph.
- .FG
- <inset figure here>
- .FE
- .LP
- MOre lines of text to be found after the figure.
- These lines should print.
上面簡單演示了一個使用sed命令的實際例子,初學時看不懂沒有關系,只需知道大概是這麼個流程,然後下面會詳細的解釋sed命令的用法。