shell_04-sed基本用法 sed命令sed基本用法sed命令選項sed命令定位sed基本編輯 sed基本用法(1)sed(stream editor)是流編輯器,可對文字檔和標準輸入進行編輯。sed只是對緩衝區中原始檔案的副本進行編輯,並不編輯原始的檔案,如果需要儲存改動內容,可以選擇使用下面兩種方法:重新導向w編輯命令 sed基本用法(2)調用sed有三種方法:在Shell命令列輸入命令調用sed,格式為: sed [選項] ‘sed命令’ 輸入檔案將sed命令插入指令檔後,然後通過sed命令調用它,格式為: sed [選項] -f sed指令檔 輸入檔案將sed命令插入指令檔後,最常用的方法是設定該指令檔為可執行,然後直接執行該指令檔,格式為: ./sed指令檔 輸入檔案第二種方法指令檔的首行不以#!/bin/sed f開頭;第三種方法指令檔的首行是#!/bin/sed f推薦使用第一種方法和第三種方法 sed命令選項-i 直接修改檔案內容-n 不列印所有行到標準輸出-e 表示將下一個字串解析為sed編輯命令,如果只傳遞一個編輯命令給sed,-e選項可以省略-f 表示正在調用sed指令檔預設情況,sed處理完文本將輸入檔案列印到標準輸出;一旦加上-n選項,sed就不再列印輸入檔案,而只列印處理結果 當向sed命令傳遞多個編輯命令時,在每個編輯命令前需要加上-e選項 sed文本定位方法 x x為指定行號x,y 指定從x到y的行號範圍/pattern/ 查詢包含模式的行/pattern/pattern/ 查詢包含兩個模式的行/pattern/,x 從與pattern的匹配行到x號行之間的行x,/pattern/ 從x號行到與pattern的匹配行之間的行x,y! 查詢不包括x和y行號的行 sed編輯命令 p 列印匹配行= 列印檔案行號a\ 在定位行號之後追加文本資訊i\ 在定位行號之前插入文本資訊d 刪除定位行c\ 用新文本替換定位文本s 使用替換模式替換相應模式r 從另一個檔案中讀文本w 將文本寫入到一個檔案y 變換字元q 第一個模式比對完成後退出l 顯示與八進位ASCII代碼等價的控制字元{} 在定位行執行的命令組n 讀取下一個輸入行,用下一個命令處理新的行h 將模式緩衝區文本拷貝到保持緩衝區H 將模式緩衝區文本追加到保持緩衝區x 互換模式緩衝區和保持緩衝區內容g 將保持緩衝區內容拷貝到模式緩衝區G 將保持緩衝區內容追加到模式緩衝區 # cat insert.sed #!/bin/sed -f/^root:/i\We insert a new line./^root:/a\add a new line.(kiki) /uucp:/c\ccie w /tmp/test.txt # ./insert.sed /etc/passwd |head sed文本定位尋找到與模式比對的文本行,這是sed命令經常使用的命令經常需要結合Regex sed基本編輯(1)-a 追加文本:匹配行後面插入 -i 插入文本:匹配行前面插入-s 修改文本:將所匹配的文本行利用新文本替代 -d 刪除文本:將指定行或指定行範圍進行刪除 sed基本編輯(2)sed替換文本操作將所匹配的文本行利用新文本替換,替換文本與修改文本功能有相似之處,它們之間的區別在於:替換文本可以替換一個字串,而修改文本是對整行進行修改替換文本的格式為:s/被替換的字串/新字串/[替換選項]g 表示替換文本中所有出現被替換字串之處p 與-n選項結合,只列印替換行w 檔案名稱 表示將輸出定向到一個檔案 sed基本編輯(3)預設情況下,sed s命令將替換後的全部文本都輸出,如果要求只列印替換行,需要結合使用-n和p選項,命令格式如下:sed -n ‘s/被替換的字串/新字串/p’ 輸入檔案 sed基本編輯(4)從檔案中讀入文本,r選項退出命令: q選項表示完成指定地址的匹配後立即退出變換命令: y選項表示字元變換,它將一系列的字元變換為相應的字元sed ‘y/被變換的字元序列/變換的字元序列/’ 輸入檔案sed y命令要求被變換的字元序列和變換的字元序列等長,否則sed y命令將報錯sed編輯命令中的{}符號可以指定在定位行上所執行的命令組,它的作用與sed的-e選項類似,都是為了在定位行執行多個編輯命令 [root@i tmp]# cat passwd HAHAROOTrootroot [root@i tmp]# sed 'y/root/kxxs/' passwd HAHAROOTkxxskxxs