sed并不会改变原文件,所以的操作是原文件的一个拷贝,可以将结果重定向到新文件。在使用的时候用的最多的是三种方式(在命令行键入命令;将 s e d命令插入脚本文件,然后调用 s e d;将s e d命令插入脚本文件,并使s e d脚本中的一种)中的命令行键入方式。
格式:
sed [选项] s e d命令 输入文件。
*选项
———————————————————
s e d选项如下:
n 不打印;s e d不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑)。
p 命令可以用来打印编辑行。
c 下一命令是编辑命令。使用多项编辑时加入此选项。如果只用到一条 s e d命令,
此选项无用,但指定它也没有关系。
f 如果正在调用s e d脚本文件,使用此选项。此选项通知 s e d一个脚本文件
支持所有的s e d命令,例如:sed -f myscript.sed input_file,这里m y s c r i p t . s e
d即为支持s e d命令的文件。
———————————————————
*查找匹配
使用s e d在文件中定位文本的方式:
———————————————————
x x为一行号,如1
x , y 表示行号范围从x到y,如2,5表示从第2行到第5行
/ p a t t e r n / 查询包含模式的行。例如/ d i s k /或/[a-z]/
/ p a t t e r n / p a t t e r n / 查询包含两个模式的行。例如/ d i s k
/ d i s k s /
p a t t e r n / , x 在给定行号上查询包含模式的行。如/ r i b b o n / , 3
x , / p a t t e r n / 通过行号和模式查询匹配行。3 ,/ v d u /
x , y ! 查询不包含指定行号x和y的行。1 , 2 !
———————————————————
sed编辑命令:
———————————————————
*p 打印匹配行
sed ‘/np’ in.txt
sed ‘/pattern/’p in.txt
*= 显示文件行号
sed -e ‘/pattern/=’ in.txt (all lines)
sed -n ‘/pattern/=’ in.txt (only cared lines)
*a \ 在定位行号后附加新文本信息
sed [address]a\
*i \ 在定位行号后插入新文本信息
sed [address]i\
*d 删除定位行
[ a d d r e s s [,a d d r e s s ] ] d
*c \ 用新文本替换定位文本
[ a d d r e s s [,address]] s/ pattern-to-find /replacement-pattern/
[g p w n]
*s 使用替换模式替换相应模式
sed -n ‘/op/np &/p’ text.txt
*r 从另一个文件中读文本
sed ‘/begin-pattern./r in.txt’ out.txt
*w 写文本到一个文件
sed ‘/begin-pattern/ w in.txt’ out.txt
*q 第一个模式匹配完成后推出或立即推出
ex: sed ‘/.a.*/q’ in.txt
*l 显示与八进制A S C I I代码等价的控制字符
{ } 在定位行执行的命令组
n 从另一个文件中读文本下一行,并附加在下一行
g 将模式2粘贴到/pattern n/
y 传送字符
n 延续到下一输入行;允许跨行的模式匹配语句
———————————————————
*快速一行命令
———————————————————
‘s / \ . $ / / g’ 删除以句点结尾行
‘-e /abcd/d’ 删除包含a b c d的行
‘s / [ ] [ ] [ ] * / [ ] / g’ 删除一个以上空格,用一个空格代替
‘s / ^ [ ] [ ] * / / g’ 删除行首空格
‘s / \ . [ ] [ ] * / [ ] / g’ 删除句点后跟两个或更多空格,代之以一个空格
‘/ ^ $ / d’ 删除空行
‘s / ^ . / / g’ 删除第一个字符
‘s /CO L \ ( . . . \ ) / / g’ 删除紧跟C O L的后三个字母
‘s / ^ \ / / / g’ 从路径中删除第一个\
‘s / [ ] / [ ] / / g’ 删除所有空格并用t a b键替代
‘S / ^ [ ] / / g’ 删除行首所有t a b键
‘s / [ ] * / / g’ 删除所有t a b键
———————————————————