sed를 사용하여 파일을 백업하고 수정하는 방법은 무엇입니까?

sed를 사용하여 파일을 백업하고 수정하는 방법은 무엇입니까?

한 번에 여러 서버의 일부 구성을 덮어써야 하고, 백업을 생성할 때 원래 구성 파일을 수정하고 싶은데, 그냥 궁금해서 이 모든 작업을 sed로 수행할 수 있나요?

누군가 이 모드를 언급했지만 작동하지 않습니다.

new_port="..."
sed -i .bak "s/port=2334/${new_port}/g"

답변1

sed -i .bak "s/port=2334/${new_port}/g"

당신이 찾고 있는 수정 사항은 후행 공백을 제거하는 것입니다 -i.

sed -i.bak "s/port=2334/${new_port}/g"

new_port포트 번호만 있는 경우 다음도 반복해야 합니다 port=.

sed -i.bak "s/port=2334/port=${new_port}/g"

이 모든 것은 실제로 표현식 다음에 처리할 파일 이름을 지정하는 경우에만 작동합니다 sed.

답변2

awk를 사용해 보세요

awk '{print $0}' file >file.backup && awk '{gsub(/port=2334/,"port=${new_port}",$0);print }' file >tmpfile && mv tmpfile file

관련 정보