줄 번호를 기준으로 문자열 교체


50

많은 파일에서 특정 문자열을 바꾸려는 상황이 있습니다.

문자열 AAA 를 다른 문자열 BBB 로 바꾸십시오.하지만 AAA로 시작하거나 AAA로 끝나는 많은 문자열이 있으며 34 행에서 하나만 바꾸고 다른 줄은 그대로 유지하려고합니다.

모든 파일에서이 문자열이 정확히 34 번째 줄에있는 줄 번호로 지정할 수 있습니까?

답변:


82

sed에 행 번호를 지정하거나 awk에 NR (레코드 수)을 지정할 수 있습니다.

awk 'NR==34 { sub("AAA", "BBB") }'

또는 명령 행에 둘 이상의 파일을 지정하려면 FNR (파일 번호 레코드)을 사용하십시오.

awk 'FNR==34 { sub("AAA", "BBB") }'

또는

sed '34s/AAA/BBB/'

sed로 전체 교체

sed -i '34s/AAA/BBB/' file_name

-3

file_record의 세 번째 줄을 바꾸고 싶다고 가정 해보십시오.

sed -i "s/`head -3 file_record | tail -1 `/replaced/" file_record

머리 앞뒤로 따옴표를 다시 사용하십시오 -1 ... 여기에 그것을 복용하지 않습니다
RAMAN

1
이것은 작동하지 않을 것입니다. 약간의 탈출이 필요합니다. 세 번째 줄이 다른 곳에 복제되면 어떻게 될까요?
Sparhawk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.