sed를 사용하여 문자열을 찾아 다른 줄의 다른 문자열로 바꾸는 방법은 무엇입니까? [폐쇄]

sed를 사용하여 문자열을 찾아 다른 줄의 다른 문자열로 바꾸는 방법은 무엇입니까? [폐쇄]

다음과 같은 파일이 있습니다.

BEGIN
Name "TIPO_RECORD"
SqlType "12"
         Precision "255"
Name "Test"
         SqlType "12"
         Precision "255"
Name "xxxx"
         SqlType "12"
         Precision "255"
Name "Test"
         SqlType "12"
         Precision "255"
END

문자열 "TEST"를 찾은 다음 그 뒤의 첫 번째 문자열 "PRECISION"을 "TRY"로 바꾸는 스크립트가 필요합니다.

답변1

예제의 텍스트를 바꾸려고 한다고 가정하면 다음을 수행할 수 있습니다.

sed '/Name "Test"/ {n;n;s/Precision/Try/;}'

대소문자를 구분하지 않으려면 다음을 시도해 보세요.

sed '/Name "[Tt][Ee][Ss][Tt]"/ {n;n;s/[Pp][Rr][Ee][Cc][Ii][Ss][Ii][Oo][Nn]/Try/;}'

아니면 더 간단하게 GNU를 사용하세요 sed:

sed '/Name "Test"/I {n;n;s/precision/Try/i;}'

관련 정보