歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

sed(流編輯器)入門

sed(流編輯器)入門      sed 是 stream editor(流編輯器)的縮寫。它能夠完美配合正則表達式使用。sed命令眾所周知的一個功能是文本的替換。   1、sed可以替換給定文本中的字符串。它可以配合正則表達式來進行匹配:      $ 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為 正則表達式匹配字符(Perl風格的正則表達式),但是下表中的字符並不是所有的工具都支持              利用正則表達式\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
 
Copyright © Linux教程網 All Rights Reserved