sed 的追加,插入和刪除
追加[line-address]a/ text
插入[line-address]i/ text
更改[line-address]c/ text
這些命令都要求後面跟一個/用於轉義第一個結尾。text必須從下一行開始。要輸入多行文本,每個邊疆的行都必須用反斜槓結束,最後一行例外。
cat test
=> TS abcd abcd
3 abcd ai bi ci
TE 4abcd
-----------------------------------------------------------------
sed '/^TS/,/^TE/i/<test>' test #插入是在行之前進行的
=> <test>
TS abcd abcd
<test>
3 abcd ai bi ci
<test>
TE 4abcd
-----------------------------------------------------------------
sed '/^TS/,/^TE/c/<test>' test #將TS-TE之間的內容完全替換爲<test>
=> <test>
-----------------------------------------------------------------
sed '1i<test>' test #可以指定數字,在第1行插入
=> <test>
TS abcd abcd
3 abcd ai bi ci
TE 4abcd
------------------------------------------------------------------
如果想插入之行,可以將插入的內容寫到一個文件中
/^TS/,/^TS//i
<test1>/
<test2>/
<test3>
sed -f testinsert test
=>
<test1>
<test2>
<test3>
TS abcd abcd
<test1>
<test2>
<test3>
3 abcd ai bi ci
<test1>
<test2>
<test3>
TE 4abcd
sed 的轉換
sed '/^TS/,/^TE/y/abc//xyz/' test #這種轉換是沒有詞的概念,只要是字母abc都變爲xyz
=>
TS xyzd xyzd
3 xyzd xi yi zi
TE 4xyzd
sed 的打印
sed -n '/TS/p' test #只對匹配的行打印
=>
TS xyzd xyzd
sed -n /TS/{=;p} test #打印行號和行
=>
1
TS xyzd xyzd
sed 的讀文件與寫文件
cat test2
=>
test2
sed '$r test2' test #在test文件之後讀入test2文件的內容
=>
TS abcd abcd
3 abcd ai bi ci
TE 4abcd
test2
sed '/^TS/r test2' test #在以TS行開頭的行之後,插入test2文件的內容
=>
TS abcd abcd
test2
3 abcd ai bi ci
TE 4abcd
sed '/^TS/w test3' test 在以TS行開頭的行寫入文件test3中
cat test3
=>
TS abcd abcd