![sed를 사용하여 파일을 백업하고 수정하는 방법은 무엇입니까?](https://linux55.com/image/198883/sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%B0%B1%EC%97%85%ED%95%98%EA%B3%A0%20%EC%88%98%EC%A0%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
한 번에 여러 서버의 일부 구성을 덮어써야 하고, 백업을 생성할 때 원래 구성 파일을 수정하고 싶은데, 그냥 궁금해서 이 모든 작업을 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