sed(流編輯器)入門

來源:互聯網
上載者:User

sed(流編輯器)入門    sed 是 stream editor(流編輯器)的縮寫。它能夠完美配合Regex使用。sed命令眾所周知的一個功能是文本的替換。 1、sed可以替換給定文本中的字串。它可以配合Regex來進行匹配:     $ sed  ' s/pattern/replace_string/ '  file     或者     $ cat file | sed sed  ' s/pattern/replace_string/ ' //這個命令從stdin中讀取輸入      使用 -i 選項可以將替換結果應用於源檔案。一般在進行替換後利用重新導向來儲存檔案。     $ sed  ' s/pattern/replace_string/ '  file > newfile     用新檔案來替換源檔案:$ mv newfile file      也可以用一行命令來完成:      $ sed  -i  ' s/pattern/replace_string/ '  file      sed  ' s/pattern/replace_string/ '  file 可以將每行中第一處匹配樣式的內容替換掉,要想把所有符合的字元都替換掉,需要在命令尾部加上參數 g,如下     sed  ' s/pattern/replace_string/g '  file      尾碼/g表示sed會替換每一處匹配。      當不需要每處替換時,可以選用/Ng來選擇從第N處開始替換,如下:     sed  ' s/pattern/replace_string/Ng'  file     $ echo hello hello hellohello | sed 's/hello/HELLO/2g'     $ hello HELLO HELLOHELLO // 輸出結果      字元/ 在sed中起到定界符作用,我們也可選用任意定界符     sed  ' s:pattern:replace_string:g '     sed  ' s|pattern|replace_string|g'      當定界符出現在要匹配的樣式中時則需要用首碼 \ 來對其轉義:     sed  ' s;he\;llo;replace_string; ' 2、sed 命令包含多個可用於對文本處理的選項。將這些選項已合理的順序組合,可以在一行命令中解決很多複雜的問題。如下:      a、移除空白行:     空白行可用'^$'進行匹配     $ sed '/^$/d' file          b、已匹配字串標記(&)     在sed中,用&標記匹配樣式的字串,就能夠在替換字串時使用已匹配的內容。     $ echo this is an example | sed 's/\w\=/[&]/g'     $ [this] [is] [an] [example]      ps: \w為 Regex匹配字元(Perl風格的Regex),但是下表中的字元並不是所有的工具都支援           利用Regex\w\+匹配一個單詞,然後用 [ & ] 替換它。&對應於之前所匹配到的單詞。          c、子串匹配標記 \1     &代表匹配給定樣式的字串。我們也可以匹配給定樣式中的其中一部分。     $ echo this is digit 7 in a number | sed ' s/digit \([0-9]\)/\1/'     $ this is 7 in a number     上述命令將digit 7 替換為7。樣式中匹配到的子串是7.     $ echo seven EIGHT | sed 's/\([a-z]\+\) \([a-z]\+\)/\2 \1/'     $ EIGHT seven     ([a-z]\+) 匹配第一個單詞,([a-z]\+) 匹配第二個單詞。 \1和 \2用來引用它們。這種引用被稱為後向引用。 在替換部分,它們的次序被更改為\2 \1,因此結果就呈現出逆序的形式。      d、組合多個運算式     利用管道組合多個sed命令。     $ sed 'expression' | sed 'expression1'     等價於:      $ sed 'expression; expression1'          e、引用     sed運算式通常用單引號來引用。不過也可以使用雙引號。雙引號會通過對錶達式求值來對其進行擴充。     如:     $ text=hello     $ echo hello world | sed "s/$text/HELLO/"     $ HELLO world     $text 求值的結果是hello
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.