我正在尝试学习使用 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)。