请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

sed打印问题

打印/etc/passwd中第一个包含/bin/bash内容的行开始,到第5行结束的内容
sed -n “//bin/bash/,5p” /etc/passwd
命令执行后,原则上执行从第1行到第5行就好了,最后的两条/bin/bash也打印出来了,多了两条打印, 请问可以处理吗图片描述

正在回答 回答被采纳积分+3

1回答

酷田 2020-01-02 22:40:29

/pattern/,line    第一个匹配到的模式到指定的行号之间的内容,如果是前面模式匹配匹配不到则前后模式匹配操作都放弃,如果是后面行号匹配不到(例如模式匹配的行在数字行之后,仅前面模式匹配操作生效,过大则默认匹配到行尾);这里理解sed有这种用法就可以,实际场景中很少会用到,通常都是模式正则的匹配

1 回复 有任何疑惑可以回复我~
  • 模式匹配到的行在数字行之前,第一行就匹配到了/bin/bash,是不是只要打印1到5行就可以了,最后的两行是不是就不用打印了,要怎么操作下才可以做到
    回复 有任何疑惑可以回复我~ 2020-01-03 13:58:34
  • 酷田 回复 提问者 qq_大活神仙_03456270 #2
    /etc/passwd中匹配/bin/bash的行到第5行的内容,虽然第一次匹配到了第一行到第五行的内容,但是因为sed会遍历整个/etc/passwd文件,因此,第五行后面的/bin/bash依然会匹配到,但因为第五行已经过了,所以只能/bin/bash生效,所以第五行之后的/bin/bash也会打印出来
    回复 有任何疑惑可以回复我~ 2020-01-03 14:56:47
  • 提问者 qq_大活神仙_03456270 回复 酷田 #3
    如果sed遍历整个文件的话,循环执行,那打印1到5的一个要求用sed就实现不了吧,同样在/d删除中也是这样,这条执行也就有风险了
    回复 有任何疑惑可以回复我~ 2020-01-05 15:15:22
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信