使用命令行工具,我试图找到除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