grep 搜索组

grep 搜索组

我正在尝试学习使用 grep 组,例如 sed \1\2\3,但有问题。例如,我过滤 /etc/services 文件以分隔所有端口。我做什么:

~$ grep -E '[0-9]{1,5}/(tcp|udp)' /etc/services

现在我得到了“端口/协议”。接下来,我尝试将其分组:

~$ grep -E '\([0-9]{1,5}\)/(tcp|udp)' /etc/services

并且没有任何效果。好吧,尝试非扩展 grep:

~$ grep '\([0-9]*\)/[tcp\|udp]\1' /etc/services

但结果不正确(/t 或 /u)。那么,如何使用群组呢?

答案1

您指的是正则表达式反向引用。

请检查这两个参考资料:

https://stackoverflow.com/questions/4609949/what-does-1-in-sed-do

http://www.gnu.org/software/grep/manual/html_node/Back_002dreferences-and-Subexpressions.html

查看其输出grep '\([0-9]\)\1' /etc/services将为您提供一个行结果集,其中数字后面直接跟有相同的数字(反向引用 \1)。

相关内容