我的文本格式是
synchronised to server (192.168.204.1) at stratum 5
我想提取括号和之前的文本之间的IP地址。喜欢
synchronised to server (192.168.204.1)
什么是正则表达式。(使用awk或grep)
答案 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
简要说明,
.*\([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}\)
将匹配(IP地址)前面的所有内容。注意内在
括号应被逸出。\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
是单词边界
\)
匹配括号