基本sed编辑命令
p 打印匹配行
= 显示文本行号
a\ 在定位行后附加新文本信息
i\ 在定位行后插入新文本信息
d 删除定位行
c\ 用文本替换定位文本
s 使用替换模式替换相应模式
r 从另一个文本中读文本
w 写文本到一个文件
q 第一个模式匹配完成后推出或立即推出
l 显示与八进制ASCII代码等价的控制字符
{} 在定位行执行的命令组
n 从另一个文本中读文本下一行,并附加下一行
g 将模式2粘贴到/pattern n/
y 传送字符
sed例子中使用如下文本文件quote.txt
$cat quote.txt
The honeysuckle band played all night long for only $90.
It was an evening of splendid music and company.
Too bad the disco floor fell through at 23:10.
The local nurse Miss P.Neave was in attendance.
显示quote.txt的第二行
$sed -n '2p' quote.txt
显示quote.txt的1至3行
$sed -n '1,3p' quote.txt
匹配单词Neave,并显示此行
sed -n '/Neave/'p quote.txt
打印最后一行
sed -n '$p' quote.txt
打印行号
sed -e '/music/=' quote.txt
匹配第4行的The字符
sed -n '4,/The/'p quote.txt
向quote.txt插入文本Then suddenly it happened.可编写一sed脚本append.sed
$cat append.sed
#!/bin/sed -f
/company/ a\
Then suddenly it happened.
增加可执行权限
chmod u+x append.sed
运行./append.sed quote.txt
插入文本
在指定文件插入一行文本,用[address]i\
例如insert.sed
#!/bin/sed -f
/attendance/ i\
Utter confusion followed.
运行insert.sed quote.txt即可
修改文本,用[address]c\
例如change.sed
#!/bin/sed -f
/honeysuckle/ c\
The office Dibble band played well.
运行change.sed quote.txt
删除文本
sed '1d' quote.txt 删除第一行
sed '1,3d' quote.txt 删除1到3行
sed '$d' quote.txt 删除最后一行
将played替换为from Hockering
sed -n 's/played/from Hockering &/p' quote.txt
删除路径第一个/
echo $PWD | sed 's/^\///g'
增加文件扩展名
sed附加字符串".doc"到字符串"account"
echo "account" | sed 's/$/.doc/g'
附加文本
$cat ok.txt
AC456
AC492169
AC9967
AC88345
如果要在ok.txt每句末尾加上Passed,可用
sed 's/[0-9][0-9]*/& Passed/g' ok.txt