sed 명령을 사용하여 특정 줄의 문자열을 특정 문자열로 변경합니다.

sed 명령을 사용하여 특정 줄의 문자열을 특정 문자열로 변경합니다.

파일에 "test"라는 문자열이 포함되어 있으면 sed를 사용하여 파일의 네 번째 줄에서만 문자열을 변경해야 합니다.

기본적으로 내가 지금 얻는 것은 다음과 같습니다.

sed '/test/ s/abc/zz/g' sample

이것은 기본적으로 행을 조사하여 테스트가 있는지 확인한 다음 해당 행에 있으면 abc를 zz로 변경합니다.

그런데 어떻게 네 번째 행만 타겟팅할 수 있나요?

나는 노력했다

 sed '/test/ 4s/abc/zz/g' sample

s 앞에 4를 추가하면 작동하지 않습니다.

답변1

일방 통행:

sed -e '4 {
  /test/s/abc/zz/g
}' <file

답변2

잘 모르겠지만, 이런 것이 효과가 있을까요?

awk 'NR==4 {print $0}' filename.txt | grep 'test' | sed 's/abc/xyz/g'

답변3

다른 방법:

먼저 "test"라는 문자열이 포함된 줄을 찾습니다.

LINE=$(grep "테스트" 파일 -n | awk '{print $1}' | cut -d ':' -f1 | xargs)

그런 다음 LINE 변수를 사용하여 다음을 수행합니다.

sed "s$LINEs/abc/zzz/g" 파일

답변4

당신은 이것을 사용할 수 있습니다

sed -i '4s/old_text/new_text/g' file_name

관련 정보