我的log.txt
文件包括
...
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
...
我怎样才能更换
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
和
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 0.0.0.0/0
从命令行?换句话说,我想添加0.0.0.0/0
到该行的末尾。
答案1
使用 sed
sed -i 's+^mynetworks.*+& 0.0.0.0/0+' log.txt
使用 awk
awk '/^mynetworks/ {$0=$0" 0.0.0.0/0"} 1' log.txt
或者
awk '{if ($1 ~ /^mynetworks/) print $0, "0.0.0.0/0"; else print $0}' log.txt
使用bash
while read -r line ; do
[[ $line == mynetworks* ]] && line+=" 0.0.0.0/0"
echo "$line"
done < log.txt
答案2
要将指定的文本添加到文件中的一行 -如果该行是唯一以mynetworks
, 你可以这样做:
sed --in-place '/^mynetworks/s_.*_& 0.0.0.0/0_' /path/to/file
答案3
我倾向于使用 Perl。在这种情况下,sed 或 awk 都可以,但有时 Perl 的灵活性很有用。
perl -pi -e 's/^(mynetworks.*)/$1 0.0.0.0\/0/' /path/to/file
或者如果这是在管链中
cat file | perl -pe 's/^(mynetworks.*)/$1 0.0.0.0\/0/'