파일에 "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