正则表达式以提取括号之间的ip

时间:2018-07-17 03:49:49

标签: regex awk grep

我的文本格式是

synchronised to server (192.168.204.1) at stratum 5

我想提取括号和之前的文本之间的IP地址。喜欢

synchronised to server (192.168.204.1)

什么是正则表达式。(使用awk或grep)

3 个答案:

答案 0 :(得分:0)

如果您的实际Input_file与所示示例相同,那么以下内容可能会对您有所帮助。

awk 'match($0,/.*\([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\)/){print substr($0,RSTART,RLENGTH)}'  Input_file

答案 1 :(得分:0)

您是否考虑使用sed来做到这一点?这是您可以尝试的命令

sed -r 's#(.*\([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}\)).*#\1#' Input_File

简要说明,

  1. 正则表达式.*\([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}\)将匹配(IP地址)前面的所有内容。注意内在 括号应被逸出。
  2. \1仅打印外部括号包含的匹配部分。

答案 2 :(得分:-1)

尝试一下!

.*\b([0-9]{1,3}\.){3}[0-9]{1,3}\b\)

故障:

.*选择IP地址之前的所有文本

\b匹配单词字符和非单词字符之间的单词边界。
([0-9]{1,3}\.)匹配数字0-9总共1-3次(以使1.1.1.1和127.0.0.1成为有效IP地址),然后匹配一个句点。
{3}匹配上述令牌的3倍。
[0-9]{1,3}与数字0-9匹配,总共匹配1-3次。
\b是单词边界
\)匹配括号