한 번에 여러 서버의 일부 구성을 덮어써야 하고, 백업을 생성할 때 원래 구성 파일을 수정하고 싶은데, 그냥 궁금해서 이 모든 작업을 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