多くの ID アドレス (IPV4 と IPV6 の両方) を含むファイルがあります。sed コマンドを使用して、古い IP のすべてのオカレンスを新しい IP に置き換えたいと考えています。しかし、私は問題に直面しています:
以下のような古いIP
2.2.2.2 -IPV4
2:2:2.2.2.2 - IPV6: Note ':'
kshでは、使用しています
oldIP=2.2.2.2
newIP=3.3.3.3
sed -i 's/'$oldIP'/'$newIP'/g' filename.
しかし、これは 2.2.2.2 と 2:2:2.2.2.2 の両方を置き換えています。in oldIP 変数は正規表現として使用されます。
scipt 内のファイルの正確な IP を一致させる方法を教えてもらえますか?
入力ファイル: a.txt - oldIP、newIP を含む
1.1.1.1,9.9.9.9
0.0.0.0,9.9.9.9
2.2.2.2,9.9.9.9
5:5:5.5.5.5,[9:9:9.9.9.9]
3.3.3.3,9.9.9.9
3:3:3.3.3.3,9:9:9.9.9.9
1:1:3.3.3.3,9:9:9.9.9.9
#!/bin/ksh
ipAddrFile=$1
while read line
do
OLDIFS=$IFS
IFS=","
array=( $line )
IFS=$OLDIFS
if [ "${array[1]}" = "" ]; then
echo "tokenize ip address list fail. Check if proper separator is used."
fi
oldIP=${array[0]}
newIP=${array[1]}
`sed -i 's/'$oldIP'/'$newIP'/g' temp.xml`
if [ $? -ne 0 ]; then
echo "Replacing field value failed"
exit 1
fi
done < $ipAddrFile