나는 sed를 처음 사용하지만 s/..../..../
한 줄에 있으면 전체 문장을 수정하기 위해 sed (대체)를 실험 했지만 다음과 같이 두 줄로 분리 된 문장을 수정하는 방법에 대한 대안 솔루션을 알지 못합니다.
이:
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
실제로 다음과 같이 작성됩니다.
Lorem Ipsum is simply dummy text of the
printing and typesetting industry.
한 문장이 아닌 두 줄로되어 있어도 문장 전체를 대체하기 위해 이것을 감지하거나 코드를 작성하는 방법은 무엇입니까?
답변
다음 명령은 두 상황 모두에서 작동합니다.
sed '/Lorem.*/ {N; s/Lorem.*industry\./string to replace/g}' filename
답변
sed는 여러 줄의 패턴을 일치시킬 수 있지만 (명령을 사용 N
하거나 H
일치하기 전에 연속적인 줄을 추가하기 위해) 편안 영역 밖에 있습니다. 당신이 고통을 좋아하는 경우에만 시도하십시오.
펄은 이런 종류의 일을 잘 할 수 있습니다. -p
스위치 를 사용하여 한 번에 한 레코드 씩 표준 입력을 처리하고 수정 된 레코드를 인쇄하고 (레이스 됨) -000
단락 모드 (레코드가 공백 행으로 구분됨 ) 를 켭니다. 정규식 \s
에서 줄 바꿈을 포함한 모든 공백 문자와 일치합니다.
perl -p -000 -e 's/Lorem\s+Ipsum\s+is\s+simply\s+dummy\s+text\s+of\s+the\s+printing\s+and\s+typesetting\s+industry\./Replacement text/g'
원본에 줄 바꿈이 들어있을 때 대체 텍스트에 줄 바꿈을 넣으려면 더 복잡합니다. 이를 수행하는 방법은 개행 위치에 대한 요구 사항에 따라 다릅니다.
답변
sed는 여러 줄에서 쉽게 읽을 수 없습니다. perl -i -0pe 's/.../.../...'
대신 사용하십시오 .