使用正则表达式在括号之间获取子串

时间:2013-04-10 22:53:08

标签: regex linux shell

我有如下几行:

PING planetlab2.tau.ac.il (192.114.4.3) 56(84) bytes of data.

我想从这些行获取IP地址,这些地址位于第一个()对之间

如何使用linux正则表达式获取它?像sed,grep,blabla 谢谢!

2 个答案:

答案 0 :(得分:0)

如果您不需要不匹配的行,并且您只需要匹配行中的IP地址,请尝试:

perl -ne 'print $1 if /\(((?:\d{1,3}\.){3}\d{1,3})\)/'<<EOT
PING planetlab2.tau.ac.il (192.114.4.3) 56(84) bytes of data.
EOT

输出:

192.114.4.3

答案 1 :(得分:0)

echo "PING planetlab2.tau.ac.il (192.114.4.3) 56(84) bytes of data." | sed -r 's/^[^(]+\(([^)]+)\).*/\1/'
192.114.4.3