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