感谢支持
我们一直在努力

Linux脚本Bash中的文本利器-sed

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 表示行号范围从xy,如25表示从第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 ! 查询不包含指定行号xy的行。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


———————————————————

赞(0) 打赏
转载请注明出处:服务器评测 » Linux脚本Bash中的文本利器-sed
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏