내 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
배쉬를 사용하여
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/'