
- Sed 教程
- Sed - 首頁
- Sed - 概述
- Sed - 環境
- Sed - 工作流程
- Sed - 基本語法
- Sed - 迴圈
- Sed - 分支
- Sed - 模式緩衝區
- Sed - 模式範圍
- Sed - 基本命令
- Sed - 特殊字元
- Sed - 字串
- Sed - 模式管理
- Sed - 正則表示式
- Sed - 實用技巧
- Sed 有用資源
- Sed - 快速指南
- Sed - 有用資源
- Sed - 討論
流編輯器 - 基本語法
本章介紹SED支援的基本命令及其命令列語法。SED可以以下兩種形式呼叫
sed [-n] [-e] 'command(s)' files sed [-n] -f scriptfile files
第一種形式允許在命令列中指定命令,這些命令用單引號括起來。後面一種形式允許指定包含SED命令的指令碼檔案。但是,我們可以多次將這兩種形式結合使用。SED提供各種命令列選項來控制其行為。
讓我們看看如何指定多個SED命令。SED提供`delete`命令來刪除某些行。讓我們刪除第1、2和第5行。目前,忽略`delete`命令的所有細節。稍後我們將詳細討論`delete`命令。
首先,使用`cat`命令顯示檔案內容。
[jerry]$ cat books.txt
執行上述程式碼後,您將得到以下結果
1) A Storm of Swords, George R. R. Martin, 1216 2) The Two Towers, J. R. R. Tolkien, 352 3) The Alchemist, Paulo Coelho, 197 4) The Fellowship of the Ring, J. R. R. Tolkien, 432 5) The Pilgrimage, Paulo Coelho, 288 6) A Game of Thrones, George R. R. Martin, 864
現在指示SED只刪除某些行。在這裡,為了刪除三行,我們使用-e選項指定了三個單獨的命令。
[jerry]$ sed -e '1d' -e '2d' -e '5d' books.txt
執行上述程式碼後,您將得到以下結果
3) The Alchemist, Paulo Coelho, 197 4) The Fellowship of the Ring, J. R. R. Tolkien, 432 6) A Game of Thrones, George R. R. Martin, 864
此外,我們可以將多個SED命令寫入文字檔案,並將文字檔案作為引數提供給SED。SED可以對模式緩衝區應用每個命令。以下示例說明了SED的第二種形式。
首先,建立一個包含SED命令的文字檔案。為了便於理解,讓我們使用相同的SED命令。
[jerry]$ echo -e "1d\n2d\n5d" > commands.txt [jerry]$ cat commands.txt
執行上述程式碼後,您將得到以下結果
1d 2d 5d
現在指示SED從文字檔案讀取命令。在這裡,我們實現了與上述示例相同的結果。
[jerry]$ sed -f commands.txt books.txt
執行上述程式碼後,您將得到以下結果
3) The Alchemist, Paulo Coelho, 197 4) The Fellowship of the Ring, J. R. R. Tolkien, 432 6) A Game of Thrones,George R. R. Martin, 864
標準選項
SED支援以下標準選項
-n: 預設列印模式緩衝區。例如,以下SED命令不顯示任何輸出
[jerry]$ sed -n '' quote.txt
-e
[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
: 下一個引數是一個包含編輯命令的檔案。尖括號表示必填引數。在下面的示例中,我們透過檔案指定print命令
[jerry]$ echo "p" > commands [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
GNU 特定選項
讓我們快速瀏覽一下GNU特定的SED選項。請注意,這些選項是GNU特有的;其他版本的SED可能不支援這些選項。在後面的章節中,我們將更詳細地討論這些選項。
-n, --quiet, --silent: 與標準-n選項相同。
-e script, --expression=script: 與標準-e選項相同。
-f script-file, --file=script-file: 與標準-f選項相同。
--follow-symlinks: 如果提供此選項,則SED在就地編輯檔案時會遵循符號連結。
-i[SUFFIX], --in-place[=SUFFIX]: 此選項用於就地編輯檔案。如果提供了字尾,則它會備份原始檔案,否則它會覆蓋原始檔案。
-l N, --line-lenght=N: 此選項將l命令的行長度設定為N個字元。
--posix: 此選項停用所有GNU擴充套件。
-r, --regexp-extended: 此選項允許使用擴充套件正則表示式而不是基本正則表示式。
-u, --unbuffered: 提供此選項時,SED會從輸入檔案中載入最少的資料,並更頻繁地重新整理輸出緩衝區。當您不想等待輸出時,它對於編輯“tail -f”的輸出很有用。
-z, --null-data: 預設情況下,SED用換行符分隔每一行。如果提供了NULL-data選項,則它使用NULL字元分隔行。