자세를 찾은 다음 sed를 사용하여 변경하십시오.


11

이 스크립트는 sed를 사용하여 모든 ""를 "새 항목"으로 변경합니다. yyy 다음에 ""만 바꾸는 방법은 무엇입니까? sed 또는 다른 것을 사용합니까?

cat >sample.txt <<EOF
xxx:
""
yyy:
""
}
EOF
sed --expression='s/""/"new stuff"/' sample.txt

답변:


8

귀하의 질문을 이해하지 못할 수도 있습니다. 'yyy'다음의 값만 바꾸려면 이전 답변을 사용하십시오. 'yyy'다음의 모든 값을 바꾸려면 다음 한 줄짜리를 시도하십시오.

sed --expression='/yyy/,$ s/""/"new stuff"/g' sample.txt

테스트하지 않았습니다 : D ...


3

답변은 O'Reilly-Sed & Awk 2nd Addround Around page 152에서 수집했습니다.

파일에 스크립트 작성

/yyy\:$/{
N
s/yyy\:\n\"\"/yyy\:\
\"new stuff\"/
}

평소와 같이 데이터에 적용하십시오

sed -f 스크립트 sample.txt

이 스크립트는 yyy :를 찾습니다. 발견되면 다른 라인을 패턴 버퍼로 읽습니다 (Star Trek Transporter와 같은 소리). 이제 결합 된 줄에서 as / 명령을 수행하십시오. 그래서 우리는 yyy : newline ""을 찾고 있습니다. 발견하면 yyy로 교체하십시오 : \ 실제 줄 바꿈 백 슬래시 다음 "새 항목"

행운을 빕니다


1
맨 페이지 참조 : unixhelp.ed.ac.uk/CGI/man-cgi?sed 주소 주소 검색

1

일단 특정 수준의 복잡성을 넘어 서면 perl로 전환합니다 . s2p 는 현재 sed 솔루션의 번역을 처리합니다. 또는 처음부터 간단하게 작성할 수 있습니다. 검색 / 바꾸기 표현식은 동일하게 유지됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.