如何解决在bash中的特定行中搜索模式
我想在特定行中找到模式(不区分大小写)。如果我发现它,那就做点什么。 我无法使用grep,因为在所有文件中都找到了。 最好的方法是什么?
解决方法
尝试一下,其中2
是您要搜索的行pattern
:
sed '2!d;/pattern/I!d' input
这个sed脚本基本上d
删除了除第2行以外的所有行,因为2!
是不是第2行;那么在经过该操作的所有行中,这意味着只有第2行,所有与pattern
不匹配的行也会被d
删除。
因此,仅剩下与pattern
匹配的情况下,并由sed隐式打印的所有内容才是第2行。
请注意,区分大小写的标志I
不是POSIX,IIRC。试试看。如果它不起作用,则可以始终使用[pP][aA][tT][tT][eE][rR][nN]
。
还请注意,无论匹配还是不匹配,此命令都将返回0。如果您需要根据文件是否匹配采取行动,可以这样做
[[ -n $(sed '2!d;/pattern/I!d' input) ]] && echo matched || echo not matched
如果模式是变量,则可以这样包含它:
sed '2!d;/'"$variable"'/I!d' input
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。