【发布时间】:2021-11-20 06:17:05
【问题描述】:
我有一个文件 config.txt,它由如下几行组成
$ cat config.txt | head -n 3
f03889d9abcb6a16155411bb8e0a34dddb5c8e4c@192.168.3.4:26601
be9d757acee1f5b573ec18d1e056542bc282be23@169.172.56.77:26604
d40ec20a080468fcd5965493d904e4d536cf5767@10.129.101.3:26607
$ cat ip.txt | head -n 3
10.0.4.5
10.3.5.6
10.3.5.8
我想将config.txt中的IP地址分别替换为ip.txt文件中的ip
预期的输出是
f03889d9abcb6a16155411bb8e0a34dddb5c8e4c@10.0.4.5:26601
be9d757acee1f5b573ec18d1e056542bc282be23@10.3.5.6:26604
d40ec20a080468fcd5965493d904e4d536cf5767@10.3.5.8:26607
由于配置文件中的 ip 是动态的,我需要在 sed 中使用正则表达式来替换 IP。 例如:
$ echo "f03889d9abcb6a16155411bb8e0a34dddb5c8e4c@192.168.3.4:26601" | sed "s/*@\+:*/*@10.0.4.5:*/g"
但它没有更新IP。我对脚本中的正则表达式非常陌生。请帮忙!
【问题讨论】:
-
避免使用
head -n3 config.txt对 Cat (tm) 进行无用的使用,顺便说一句。