appendstring
sed를 사용하여 and가 포함된 줄 뒤에 추가 하려고 합니다 .Hello
World
Hello something here World
World fsf Hello
순서를 고려하면 다음과 같이 작동합니다.
sed -i '/Hello*World\|World*Hello/a appendstring' file
그러나 일치시킬 문자열이 많고 순서가 맞지 않으면 확실히 작동하지 않습니다.
그런 다음 순서에 관계없이 두 개의 문자열이 포함된 줄을 삭제하는 방법을 설명하는 다른 링크에서 솔루션을 시도했습니다.
https://stackoverflow.com/questions/28561519/delete-lines-that-contain-two-strings
하지만,
sed -i '/Hello/!b;/World/d' file
이는 삭제에도 적용되지 않습니다.
다음은 이 질문에 대한 답변 중 하나이기도 합니다.
sed -i '/Hello/{/World/d}' file
일하다,그래서 Append로 구현해 보았습니다. 사용:
sed -i '/Hello/{/World/a} appendstring' file
하지만 오류가 발생했습니다.
sed: -e expression #1, char 0: unmatched `{'
고쳐 쓰다: 링크의 게시물에는 !b로 솔루션이 설명되어 있습니다. 느낌표 때문에 cshell에서는 작동하지 않지만 sh 및 bash에서는 작동합니다. 그리고 스크립트 내에서 sed를 실행할 때 여러 줄을 삽입하고 큰 단락을 추가하도록 쉽게 확장할 수 있습니다.
sed -i '/Hello/!b; /World/a \
addline \
addanotherline ' file
답변1
이제 거의 충분히 먹었습니다.
sed -i '/Hello/{/World/a} appendstring' file
주장을 분리해야 합니다. 다음과 같이 사용하세요 -e
.
sed -i -e '/Hello/{/World/a appendstring' -e '}' file
이용시 참고해주세요ㅏ-i
개행 문자가 없는 pend 명령은 스위치와 마찬가지로 GNU 확장입니다 .
이 작업을 보다 편리하게 수행하고 여러 문자열 일치 가능성을 고려하려면 다음을 시도해 보십시오.
sed '/multiple/{/words/{/to/{/match/ s/$/append this/;};};}' file > newfile
mv newfile file
이미 GNU Sed를 사용하고 있으므로 다음을 사용하세요.
sed -i -e '/multiple/{/words/{/to/{/match/ a append this' -e 'a and also this' -e 'a oh and this too' -e '};};}' file