![sed를 사용하여 문자열을 찾아 다른 줄의 다른 문자열로 바꾸는 방법은 무엇입니까? [폐쇄]](https://linux55.com/image/67210/sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EC%B0%BE%EC%95%84%20%EB%8B%A4%EB%A5%B8%20%EC%A4%84%EC%9D%98%20%EB%8B%A4%EB%A5%B8%20%EB%AC%B8%EC%9E%90%EC%97%B4%EB%A1%9C%20%EB%B0%94%EA%BE%B8%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%20%5B%ED%8F%90%EC%87%84%5D.png)
다음과 같은 파일이 있습니다.
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;}'