sed是一個非交互式文本編輯器,他能夠對文本文件和標準輸入進行編輯,標準輸入能夠是來自鍵盤,文件重定向,字符串,變量甚至來自於管道的文本。sed適用於如下三種場合:linux
調用sed有三種方式,一種爲she'll命令行方式,另外兩種是將sed命令寫入腳本,而後執行該腳本文件。三種方式概括以下:正則表達式
sed [選項] 'sed命令' 輸入文件
sed [選項] -f sed腳本文件 輸入文件
./sed腳本文件 輸入文件
sed命令選項及意義:shell
選項 | 意義 |
-n | 不打印全部行到標準輸出 |
-e | 表示將下一個字符串解析爲sed編輯命令,若是隻傳遞一個編輯命令給sed,-e選項能夠省略 |
-f | 表示正在調用sed腳本文件 |
sed一般由定位文本行和sed編輯命令兩部分組成,sed提供如下兩種方式定位文本:編輯器
下表是sed定位文本的方法函數
選項 | 意義 |
x | x爲指定行號 |
x,y | 指定從x到y的行號範圍 |
/patten/ | 查詢包含模式的行 |
/pattern/pattern/ | 查詢包含兩個模式的行 |
/pattern/,x | 從與pattern匹配的行到x行號之間的行 |
x,/pattern/ | 從x號行到與pattern匹配行之間的行 |
x,y! | 查詢不包括x,y行號的行 |
下面將在示例中說明sed的命令選項的意義,新建一個名爲sedtest的文件,內容以下:(測試過程當中可能會有修改)測試
this is a test file for sed Test is real important
what i want to say is: haha nobody is god except allah.
This is very IMPORTYANT what you want to say is:goodbye! where to go? I don't know! this cool!
#第一條命令,帶-n選項,只打印第一行 [root@linuxTest ~]# sed -n '1p' sedtest this is a test file for sed #第二條命令,不帶-n,不只打印第一行,還打印輸入文件的所有內容 [root@linuxTest ~]# sed '1p' sedtest this is a test file for sed this is a test file for sed Test is real important what i want to say is: haha nobody is god except allah. This is very IMPORTYANT
#打印行範圍this
root@linuxTest ~]# sed -n '2,6p' sedtest
Test is real important
what i want to say is: hahaspa
nobody is god except allah.
This is very IMPORTYANT命令行
#sed編輯命令「=」用來匹配is關鍵字的行號,若是但願行號和行內容都打印出來,則須要傳遞p和=兩個編輯命令 [root@linuxTest ~]# sed -n -e '/is/=' -e '/is/p' sedtest 1 this is a test file for sed 2 Test is real important 3 what i want to say is: haha 5
-s選項code
#使用替換模式替換相應模式 #p選項,只替換每行第一個符合條件的文本 [root@linuxTest ~]# sed -n 's/is/IS/p' sedtest thIS is a test file for sed Test IS real important what i want to say IS: haha nobody IS god except allah. ThIS is very IMPORTYANT what you want to say IS:goodbye! thIS cool! #2p,若是每行含有兩個及兩個以上目標文本,則只替換每行第二個符合條件的文本 [root@linuxTest ~]# sed -n 's/is/IS/2p' sedtest this IS a test file for sed This IS very IMPORTYANT #pg,若是該行中含有目標文本,則不論幾個都替換。 [root@linuxTest ~]# sed -n 's/is/IS/pg' sedtest thIS IS a test file for sed Test IS real important what i want to say IS: haha nobody IS god except allah. ThIS IS very IMPORTYANT what you want to say IS:goodbye! thIS cool!#w,替換後,保存文本到另一個文件[root@linuxTest ~]# sed -n 's/is/IS/gw output' sedtest