내가 원하는 것은 일치하는 항목을 찾은 다음 다음 줄의 문자 뒤의 모든 항목을 바꾸는 것입니다.
파일 내용의 예:
super_service:
app_version: 1.02
duper_service:
app_version: 4.0.1
happy_service:
app_version: 2.03
turbo_service:
app_version: 1.28.0
예상 결과: 내가 원하는 것은 duper_service 예제를 일치시킨 다음 "app_version:" 뒤의 모든 것을 내가 정의한 새 버전(예: 4.0.2)으로 바꾸는 것입니다. awk를 사용하여 이 작업을 수행할 수 있지만 변경 사항을 파일에 기록해야 합니다.
답변1
다음과 같이 작동하는 것 같습니다.
sed -i '/duper_service/!b;n;c\ \ \ \ app_version: 4.0.2' file.txt
답변2
sed
좋은 후보인 것 같습니다:
sed -i '/^[[:space:]]*duper_service:/ { N; s/[^:]*$/ 4.0.2/ }' file.txt
설명: "duper_service:" 줄이 나타나면 줄 끝과 관계없이 다음 줄이 추가되고 콜론 뒤의 ( ) [^:]*$
가 "4.0.2"로 대체됩니다.
이 -i
옵션은 파일을 제자리에서 변경합니다. GNU sed 확장입니다.