Sed指令總結
一、sed是什麼
Sed全名為Stream EDitor,即流式編輯器,行編輯器
二、sed常用用法
sed [options] 'script(模式指令)' input_file...
sed [options] -f script_file(sed腳本) input_file...
sed 'ADDR1,ADDR2command' input_file;例如sed '1,2d' fstab(可輸出重定向到别的檔案)
sed '1,2!(對指令取反)d' fstab除了第一行,第二行,其餘全删除
sed '/PATTERN/command' input_file(使用基本正規表達式的原字元,而不實用grep)
sed '/PATTERN1/,/PATTERN2/command' input_file從第一次被模式PATTERN1比對到的行到第一次被PATTERN2比對到的行執行指令command
三、sed常用選項及模式
1、常用選項
sed -i直接操作原檔案
sed -r使用擴充正規表達式
sed -n靜默模式,不列印模式空間中的内容,例如sed '1,3p' fstab會顯示所有檔案,其中前三行,顯示兩次,加了-n之後隻會顯示前三行
sed -e多腳本處理; 例如:sed -e 's/\<h\([a-zA-Z]*\)\>/H\1/g; -e 's/\(1..e\)\./\1r./g' test
2、常用模式
d删除指定行
p模式空間中的文本在處理之前,每一次都會先顯示:p,顯示,指定行會被顯示兩次
$表示最後一行
a \:在模式比對到的行後面添加新内容 ; 例如sed '/#/a \this is a comment line.\n(換行符)' binary.sh
r FILE:讀檔案追加到别的檔案後面;例如:sed '2r /root/test' binary.sh在檔案binary.sh的第二行加上/root/test的内容
i \:在模式比對到的行前面添加新内容
w FILE:把這個檔案中模式所比對到的行寫到另一個檔案中;例如:sed -n '/[a-z]/w /tmp/sev.out' binary.sh
s :s/PATTERN/string/ 例如:s@/dev/vo10/root@/dev/sda2/
g:比對全文
i:忽略大小寫
s/PATTERN/&string/在前面比對到的PATTERN後面加上string例:sed 's/\(1..e\)\./\1r./g' test 隻比對前面的1..e并且其後加上r.
n:讀取下一行,以覆寫方式 例如:sed -n '1n;p' test一次讀進來
N:讀取下一行,以追加方式 例如:sed 'N;p' test(在模式空間中兩行做一行處理)sed 'N;N' test(三行在一起)兩行合并為一行sed 'N;s/\n/ /g' newfile
g:将保留白間中的内容複制到模式空間,覆寫的方式
G:将保留白間中的内容複制到模式空間,追加的方式 例如:sed 'G' test每隔一行空一行
h:将模式中的模式空間複制到保留白間,覆寫的方式 例如: sed -n 'h;n;G;h;n;G;p' test
H:将模式中的模式空間複制到保留白間,追加的方式
b label:跳轉 例如:sed -n '3b;p'跳轉到第三行 seb '\#b' test跳過有#号的行
例:sed '/#/b para.s/grep/GREP/g;:para; y/abc/ABC/' binary對于有#号的行從para.s跳轉到:para,是以s/grep/GREP不執行,沒有#号的行才執行
x:将保留白間和模式空間對調
t label: 測試:前面的s指令執行成功就跳轉到标記位置