歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

shell_04-sed基本用法

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命令經常使用的命令 經常需要結合正則表達式         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  HAHA ROOT root root     [root@i tmp]# sed 'y/root/kxxs/' passwd  HAHA ROOT kxxs kxxs  
Copyright © Linux教程網 All Rights Reserved