OSX의 여러 줄 교체는 여러 줄에 걸쳐 복사됩니다.

OSX의 여러 줄 교체는 여러 줄에 걸쳐 복사됩니다.

나는 그것에 대해 약간 새로운 것이고 Mac으로 옮긴 이후로 많이 사용하지 않았지만 몇 번의 검색 후에 sed모든 Ubuntu와 Mac에서 상황이 다른 것 같다는 것을 깨달았습니다. sed내가 원하는 것은 XML 파일의 첫 번째 부분을 몇 가지 새로운 값으로 바꾸는 것입니다. 지식을 새롭게 한 후 다음을 sed사용하기로 결정했습니다.

sed -e '1,/<\/value>/ s/.*/\<something\>lorem ipsum\<\/something\>\n\<again\>wednesday\<\/again\>\n/' $theFile

코드를 실행하면 <something>lorem ipsum</something>n<again>wednesday</again>n첫 번째 줄부터 </value>끝까지 모든 줄에 출력됩니다.

그래서 제 질문은 모든 줄에서 파일 내용을 반복하지 않고 원하는 새 줄의 파일 내용을 바꾸는 적절한 방법은 무엇입니까?

답변1

이것은sed철사-편집기는 해결된 각 줄에 스크립트를 적용합니다. 따라서 newline 구분 기호를 사용하여 하나의 문자열로 바꾸고 싶은 줄을 수집해야 합니다.

sed -e '1{:1;N;/<\/value>/b1;s/.*/\<something\>lorem.....\n/}' $theFile

또 다른 방법은 i블록 앞에 필요한 텍스트를 삽입한 다음 블록을 제거하는 것입니다.

sed -e '1i\\<something\>lorem.....\n' -e '1,/<\/value>/d' $theFile

관련 정보