1. 程式人生 > >Linux學習筆記13——sed基本用法

Linux學習筆記13——sed基本用法

sed命令

三大基本文本處理工具:grep,sed(流編輯器),awk

sed: Stream EDitor
行編輯器:sed
全屏編輯器:vi

sed: 模式空間
默認不編輯文件本身,僅對模式空間中的數據做處理;而後,處理結束後,將模式空間打印至屏幕;

sed [options] ‘AddressCommand‘ file ...(對這些文件中的符合這個地址address指定範圍內的行,執行以下命令編輯)
-n: 靜默模式,不再默認顯示模式空間中的內容
-i: 直接修改原文件(這個要註意!!!!!!)
-e SCRIPT -e SCRIPT:可以同時執行多個操作(腳本)
-f /PATH/TO/SED_SCRIPT 可以把需要執行的多個操作寫在一個腳本文件中,執行的時候一行一行的執行腳本中的每一行,就相當於-e 腳本文件第一行 -e 腳本文件第二行。

sed -f /path/to/scripts file
-f 指定文件路徑 需要執行的文件
-r: 表示使用擴展正則表達式,默認只使用基本正則表達式。

Address地址:(地址如何表示,如果不寫就表示查找全文)
1、StartLine,EndLine
比如1,100
$:最後一行,$-1:最後第二行
2、/RegExp/(就是正則表達式的模式)
“/^root/”:以root字符串開始的行
3、/pattern1/,/pattern2/(/模式1/,/模式2/)
第一次被pattern1匹配到的行開始,至第一次被pattern2匹配到的行結束,這中間的所有行
4、LineNumber (只給一個數值)
指定的行
5、StartLine, +N
從startLine開始,向後的N行;

Command:一下的指定範圍都是通過address指定的
d: 刪除符合條件的行;
p: 顯示符合條件的行(默認顯示匹配到的行兩次以及沒被匹配到的一次,因為sed的默認模式是打印模式空間,可以用-n選項只顯示匹配到的一次);
a \string: 在指定的行後面追加新行,內容為string
\n:可以用於換行,可以和a \string i \string和用追加多行。
i \string: 在指定的行前面添加新行,內容為string
r FILE: 將指定的文件的內容添加至符合條件的行處
w FILE: 將地址指定的範圍內的行另存至指定的文件中;
s/pattern/string/ 修飾符: 查找並替換,默認只替換每行中第一次被模式(正則表達式)匹配到的字符串。

如果希望沒行中被模式(正則表達式)匹配到的字符串都替換那麽需要加修飾符
g: 全局替換
i: 忽略字符大小寫
s///完全可以用三個相同的符號做替換:s###, s@@@

如何將一個文件中的單詞替換成另一個單詞:like-->liker love-->lover
sed "s#l..e#l..er#g" ./sed.txt 不能這麽使用因為s/pattern/string/ 第二個不匹配正則表達式。
那麽就用到了這個符號 &: 引用模式匹配整個串
sed "s#l..e#&r#g" ./sed.txt
同時也可以用正則表達式中的後向引用: (), \1, \2
sed "s#(\l..e)#\1r#g" ./sed.txt
如果這樣改呢?like-->Like love-->Love
就只能使用後向引用:sed "s#l(..e)#\L\1#g" ./sed.txt

Linux學習筆記13——sed基本用法