텍스트 파일의 문자열을 다른 문자열로 바꾸는 방법

텍스트 파일의 문자열을 다른 문자열로 바꾸는 방법

텍스트 파일의 특정 문자열을 추가 세부정보가 포함된 다른 문자열로 바꾸고 싶습니다.

예:

파일 내용이 다음과 같은 경우:

Library Hello1
===============
any text here
version: 0.1
--------------

Library Hello2
===============
any text here
version:0.1
--------------

Library Hello3
===============
any text here
version: 0.2
--------------

나는 grep"library"라는 단어를 포함하는 모든 줄을 원하고 모든 "library"를 다른 단어로 바꾸려고 합니다. "myStr". 그러나 이는 버전 0.1에서만 수행되어야 합니다. 다른 모든 것은 무시되어야 합니다.

검색/바꾸기는 각 코드 블록 내에서 수행되어야 합니다. 이 블록은 ===== 및 -----로 구분됩니다.

참고: 검색 및 교체를 수행할 수 있지만 동시에 블록 내에서 버전을 검색하는 방법을 모르겠습니다.

답변1

이 sed를 사용해 볼 수 있습니다

sed '/^Library/!b;:A;N;/version/!bA;/0\.1$/s/^Library/myStr/' infile

도서관을 찾는 것부터 시작하세요.
다음 줄이 모두 발견되면 버전까지입니다.
find가 0.1을 찾고 가능하면 변경합니다.

관련 정보