我正在尝试寻找一种简化 grep 搜索并使其更加细化的方法。
我想要实现的一个例子:netstat 输出搜索特定的 IP 和单词 established 或另一个 IP 和另一个字符串。
如果没有 OR 语句,我可以通过运行另一个 grep 来解决这个问题,但我“需要” OR 语句。
我很满意grep 'string1\|string2'
执行 OR 查询并grep 'string1.*string2 *\|string3'
找到“string1 and string2”或“string3”。将 IP 混入其中让我不知所措,小数被视为另一个 AND 语句(我认为?)并且用作\
转义字符似乎也不起作用。有人能解释我该如何实现这一点吗?
我目前使用的内容:
grep -i '1\.2\.3\.4.*established*\|5\.6.\7\.8.*listening*' netstatoutput.txt
答案1
我建议使用grep -E
扩展的正则表达式(更少的反斜杠)。
使用括号进行分组:
grep -Ei '(1\.2\.3\.4.*established)|(5\.6.\7\.8.*listening)' netstatoutput.txt
或者使用-e
选项
grep -Ei -e '1\.2\.3\.4.*established' -e '5\.6.\7\.8.*listening' netstatoutput.txt