使用命令行工具,我試圖找到除127.0.0.1之外的任何IP地址,並用新的IP替換。我試過使用sed
:使用正則表達式搜索除127.0.0.1外的IP地址
sed 's/\([0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}\)\(?!127.0.0.1\)/'$ip'/g' file
請你能幫幫我嗎?
使用命令行工具,我試圖找到除127.0.0.1之外的任何IP地址,並用新的IP替換。我試過使用sed
:使用正則表達式搜索除127.0.0.1外的IP地址
sed 's/\([0-9]\{1,3\}.[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}(?:\.\d{1,3}){3})\b/'"$ip"'/g' file
101.155.155.155
127.0.0.1 101.155.155.155
哈克一個通過PCRE動詞(*SKIP)(*F)
,
$ perl -pe 's/\b127\.0\.0\.1\b(*SKIP)(*F)|\b\d{1,3}(?:\.\d{1,3}){3}\b/'"$ip"'/g' file
101.155.155.155
127.0.0.1 101.155.155.155
假設你有這樣的事情在你的文件my_file
127.0.0.1 192.152.30.1
158.30.254.1 127.0.0.1
158.40.253.10 127.0.0.1
你可以試試下面
sed -r 's/127.0.0.1/########/g;s/[0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}/MY_NEW_IP/g;s/########/127.0.0.1/g' my-file
在命令行中,我假設你有沒有像########
在文件
採取一切127.0.0.1
與########
替換它,然後針對所有IP地址,您將取代新IP。隨後用127.0.0.1
結果
127.0.0.1 MY_NEW_IP
MY_NEW_IP 127.0.0.1
MY_NEW_IP 127.0.0.1
更換########
如果你正在替換變量確保您的雙引號
sed -r "................................." my_file
使用標準的Unix工具這裏是一個awk
版本:
awk -v ip='aa.bb.cc.dd' '{for (i=1; i<=NF; i++)
if ($i != "127.0.0.1" && $i ~ /\<[0-9]{1,3}(\.[0-9]{1,3}){3}\>/) $i=ip} 1' file
127.0.0.1 aa.bb.cc.dd
aa.bb.cc.dd 127.0.0.1
aa.bb.cc.dd 127.0.0.1
cat file
127.0.0.1 192.152.30.1
158.30.254.1 127.0.0.1
158.40.253.10 127.0.0.1
你能解釋一下哈克嗎? – Eric 2014-12-27 14:02:20
@Eric更新.. – 2014-12-27 14:29:28
非常感謝你的工作! – 2014-12-31 11:23:28