sed는 순서가 지정되지 않은 여러 문자열을 포함하는 줄 뒤에 추가합니다.

sed는 순서가 지정되지 않은 여러 문자열을 포함하는 줄 뒤에 추가합니다.

appendstringsed를 사용하여 and가 포함된 줄 뒤에 추가 하려고 합니다 .HelloWorld

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

관련 정보