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

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

파일에 "test"라는 문자열이 포함된 경우 4번째 줄에서만 문자열을 변경하려면 sed를 사용해야 합니다.

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

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

이것은 기본적으로 행을 살펴보고 테스트가 있는지 확인하고 해당 행에 있으면 abc를 zz로 변경합니다.

그런데 어떻게 4번째 줄에만 적용하나요?

나는 노력했다

 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

관련 정보