采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
打印/etc/passwd中第一个包含/bin/bash内容的行开始,到第5行结束的内容 sed -n “//bin/bash/,5p” /etc/passwd 命令执行后,原则上执行从第1行到第5行就好了,最后的两条/bin/bash也打印出来了,多了两条打印, 请问可以处理吗
/pattern/,line 第一个匹配到的模式到指定的行号之间的内容,如果是前面模式匹配匹配不到则前后模式匹配操作都放弃,如果是后面行号匹配不到(例如模式匹配的行在数字行之后,仅前面模式匹配操作生效,过大则默认匹配到行尾);这里理解sed有这种用法就可以,实际场景中很少会用到,通常都是模式正则的匹配
模式匹配到的行在数字行之前,第一行就匹配到了/bin/bash,是不是只要打印1到5行就可以了,最后的两行是不是就不用打印了,要怎么操作下才可以做到
/etc/passwd中匹配/bin/bash的行到第5行的内容,虽然第一次匹配到了第一行到第五行的内容,但是因为sed会遍历整个/etc/passwd文件,因此,第五行后面的/bin/bash依然会匹配到,但因为第五行已经过了,所以只能/bin/bash生效,所以第五行之后的/bin/bash也会打印出来
如果sed遍历整个文件的话,循环执行,那打印1到5的一个要求用sed就实现不了吧,同样在/d删除中也是这样,这条执行也就有风险了
登录后可查看更多问答,登录/注册
30%知识讲解+70%实例操作 掌握Shell脚本编程能力
1.1k 15
8.1k 11
1.5k 6
846 6
923 6