孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

基本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

posted on 2011-05-04 20:30  孤独的猫  阅读(397)  评论(0编辑  收藏  举报