正则表达式 – 使用正则表达式搜索除127.0.0.1之外的IP地址

前端之家收集整理的这篇文章主要介绍了正则表达式 – 使用正则表达式搜索除127.0.0.1之外的IP地址前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用命令行工具,我试图找到除127.0.0.1以外的任何IP地址,并替换为新的IP.我尝试使用sed:

sed 's/\([0-9]\{1,3\}.[0-9]\{1,3\}\)\(?!127.0.0.1\)/'$ip'/g' file

你能帮帮我吗?

解决方法

由于sed不支持负前瞻断言,我建议你使用Perl而不是sed.

perl -pe 's/\b(?:(?!127\.0\.0\.1)\d{1,3}(?:\.\d{1,3}){3})\b/'"$ip"'/g' file

例:

$cat file
122.54.23.121
127.0.0.1 125.54.23.125
$ip="101.155.155.155"
$perl -pe 's/\b(?:(?!127\.0\.0\.1)\d{1,3}){3})\b/'"$ip"'/g' file
101.155.155.155
127.0.0.1 101.155.155.155

Hacky one通过PCRE动词(*SKIP)(*F),

$perl -pe 's/\b127\.0\.0\.1\b(*SKIP)(*F)|\b\d{1,3}){3}\b/'"$ip"'/g' file
101.155.155.155
127.0.0.1 101.155.155.155

猜你在找的正则表达式相关文章