shell如何取出特定文本内容并替换另一个文本中的指定内容???

比如
$cat file1
mqserver=127.0.0.1
$cat file2
ip=192.168.1.1
如何通过shell脚本将file1中的内容改为 mqserver=192.168.1.1

第1个回答  2017-03-17
1、按=分割取第二列
cat $file1|grep mqserver|awk -F= '{print $2}'`
2、直接替换文件内容
sed -i "s/127.0.0.1/192.168.1.1/" file1
3、实例:
#!/bin/sh
file1=ip1.txt
file2=ip2.txt
IP1=`cat $file1|grep mqserver|awk -F= '{print $2}'`
IP2=`cat $file2|grep ip|awk -F= '{print $2}'`
echo change $IP1 to $IP2.
sed -i "s/$IP1/$IP2/" $file1
more $file1追问

我的file1中有多个IP需要更改,我用了你的方法,如果file1中的多个IP在更改之前都相同的话,执行到Sed替换的时候就会把那些IP全部改为相同的IP,不会再执行下面的sed替换。请问我该怎么做才能不管更改之前IP相不相等,都可以实现每个sed语句对应一个替换?

本回答被提问者和网友采纳
第2个回答  2017-03-17
1、按=分割取第二列
cat $file1|grep mqserver|awk -F= '{print $2}'`
2、直接替换文件内容
sed -i "s/127.0.0.1/192.168.1.1/" file1
3、实例:
#!/bin/sh
file1=ip1.txt
file2=ip2.txt
IP1=`cat $file1|grep mqserver|awk -F= '{print $2}'`
IP2=`cat $file2|grep ip|awk -F= '{print $2}'`
echo change $IP1 to $IP2.
sed -i "s/$IP1/$IP2/" $file1
more $file1追问

我的file1中有多个IP需要更改,我用了你的方法,如果file1中的多个IP在更改之前都相同的话,执行到Sed替换的时候就会把那些IP全部改为相同的IP,不会再执行下面的sed替换。请问我该怎么做才能不管更改之前IP相不相等,都可以实现每个sed语句对应一个替换?

本回答被提问者和网友采纳
相似回答