![줄 번호를 기준으로 문자열 바꾸기](https://linux55.com/image/30610/%EC%A4%84%20%EB%B2%88%ED%98%B8%EB%A5%BC%20%EA%B8%B0%EC%A4%80%EC%9C%BC%EB%A1%9C%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%EB%B0%94%EA%BE%B8%EA%B8%B0.png)
여러 파일에서 특정 문자열을 바꾸고 싶은 상황이 있습니다.
문자열 교체AAA다른 문자열을 사용하세요혈액뇌장벽그러나 AAA로 시작하거나 AAA로 끝나는 문자열이 많이 있으므로 34행에서 문자열 하나만 바꾸고 나머지는 변경하지 않고 유지하려고 합니다.
모든 파일에서 이 문자열이 34번째 줄에 있도록 줄 번호로 지정할 수 있습니까?
답변1
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
답변2
file_record의 세 번째 줄을 바꾸고 싶다고 가정해 보겠습니다.
sed -i "s/`head -3 file_record | tail -1 `/replaced/" file_record