Sed基本語法
sed使用簡單,我們可以提供sed命令直接在命令行或具有sed命令的文本文件的形式。本教程講解調用sed的例子,有這兩種方法:
Sed 命令行
以下是我們可以指定單引號在命令行sed命令的格式如下:
sed [-n] [-e] 'command(s)' files
例子
考慮一下我們有一個文本文件books.txt待處理,它有以下內容:
- A Storm of Swords, George R. R. Martin, 1216
- The Two Towers, J. R. R. Tolkien, 352
- The Alchemist, Paulo Coelho, 197
- The Fellowship of the Ring, J. R. R. Tolkien, 432
- The Pilgrimage, Paulo Coelho, 288
- A Game of Thrones, George R. R. Martin, 864
首先,讓我們不帶任何命令使用sed文件的完整顯示內容如下:
[jerry]$ sed '' books.txt
執行上面的代碼,會得到如下結果:
- A Storm of Swords, George R. R. Martin, 1216
- The Two Towers, J. R. R. Tolkien, 352
- The Alchemist, Paulo Coelho, 197
- The Fellowship of the Ring, J. R. R. Tolkien, 432
- The Pilgrimage, Paulo Coelho, 288
- A Game of Thrones, George R. R. Martin, 864
現在,我們從上述文件中顯示將看到sed的delete命令刪除某些行。讓我們刪除了第一,第二和第五行。在這裏,要刪除給定的三行,我們已經指定了三個單獨的命令帶有-e選項。
[jerry]$ sed -e '1d' -e '2d' -e '5d' books.txt
執行上面的代碼,會得到如下結果:
- The Alchemist, Paulo Coelho, 197
- The Fellowship of the Ring, J. R. R. Tolkien, 432
- A Game of Thrones, George R. R. Martin, 864
sed腳本文件
下面是第二種形式,我們可以提供一個sed腳本文件sed命令:
sed [-n] -f scriptfile files
首先,創建一個包含在一個單獨的行的文本commands.txt文件,每次一行爲每個sed命令,如下圖所示:
1d
2d
5d
現在,我們可以指示sed從文本文件中讀取指令和執行操作。這裏,我們實現相同的結果,如圖在上述的例子。
[jerry]$ sed -f commands.txt books.txt
執行上面的代碼,會得到如下結果:
- The Alchemist, Paulo Coelho, 197
- The Fellowship of the Ring, J. R. R. Tolkien, 432
- A Game of Thrones,George R. R. Martin, 864
sed標準選項
sed支持可從命令行提供下列標準選擇。
-n 選項
這是模式緩衝區的缺省打印選項。 GNU sed解釋器提供--quiet,--silent選項作爲 -n選項的替代。
例如,下面 sed 命令不顯示任何輸出:
[jerry]$ sed -n '' quote.txt
-e 選項
-e選項的編輯選項。通過使用此選項,可以指定多個命令。例如,下面 sed 命令打印每行兩次:
[jerry]$ sed -e '' -e 'p' quote.txt
執行上面的代碼,會得到如下結果:
There is only one thing that makes a dream impossible to achieve: the fear of failure.
There is only one thing that makes a dream impossible to achieve: the fear of failure.
- Paulo Coelho, The Alchemist
- Paulo Coelho, The Alchemist
-f 選項
-f選項是用來提供包含sed命令的文件。例如,我們可以按如下方法通過文件指定一個打印命令:
[jerry]$ echo "p" > commands.txt
[jerry]$ sed -n -f commands quote.txt
執行上面的代碼,會得到如下結果:
There is only one thing that makes a dream impossible to achieve: the fear of failure.
- Paulo Coelho, The Alchemist