排除特定字符串 grep 也包括类似的字符串

joh*_*doe 4 grep text-processing

我正在尝试使用 grep 命令排除列表中的某些 URL 条目(使用 IP 而不是域名),特别是删除https://:80. 但是,带有https://和 的条目:8080也包括在内。

我的 grep 命令是:

egrep -v "https://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:80"
Run Code Online (Sandbox Code Playgroud)

我怎样才能强制 grep 只排除:80而不是:8080

输入文件内容的一个例子是:

http://10.10.46.1:80
http://10.10.48.67:8080
http://10.10.48.67:443
https://10.10.46.1:80
https://10.10.48.67:8080
https://10.10.48.67:443
Run Code Online (Sandbox Code Playgroud)

ter*_*don 5

只是在你的grep命令中更具体一点。如果 IP 是该行唯一的内容,因此:80将是最后 3 个字符,请使用:

grep -Ev "https://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:80$"
Run Code Online (Sandbox Code Playgroud)

或者,如果 之后可以有空格80,请使用:

grep -Ev "https://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:80\s*$"
Run Code Online (Sandbox Code Playgroud)

如果:80不是最后一件事,只需 grep 后有空格的情况:

grep -Ev "https://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:80 "
Run Code Online (Sandbox Code Playgroud)

如果最后一个字符不是空格,请根据您的输入进行调整。

  • 或者添加一个单词边界:`...:80\\>"` -- https://www.gnu.org/software/gnulib/manual/html_node/egrep-regular-expression-syntax.html#egrep-regular -表达式语法 (2认同)