저는 Bash 스크립트를 작성 중인데 GNU sed를 사용하여 파일에 줄을 삽입할 때 첫 번째 새 줄은 리터럴 n으로 삽입되고 나머지는 새 줄로 삽입됩니다. 명령은 다음과 같습니다.
sed '5i\n\n\n' myfile
출력은 다음과 같습니다:
n
표시된 대로 출력의 첫 번째 줄에는 포함되어서는 안되는 "n"이 포함되어 있습니다. 이 동작에서 무엇을 놓치고 있습니까? sed가 '\n'을 사용하여 새 줄만 삽입하도록 할 수 있습니까? 감사해요.
답변1
이것표준 sed
인서트예
5i\
text here...
(백슬래시 포함) GNU sed는확장command 와 같은 줄에 있는 텍스트를 허용 i
하지만 그 뒤에 백슬래시가 있으면 i
평소와 같이 명령을 종료하는 것으로 해석됩니다. 하지만 여전히 새 줄로 이동하도록 강요하지는 않습니다. 당신은 그것을 사용할 수 있습니다
5i\\n\n\n
함께하세요. 이는 이스케이프된 백슬래시가 아니라 바로 옆에 있는 두 가지 다른 유형의 백슬래시입니다. 이 동작은 문서화되지 않은 것으로 보이지만 명령과 버전 간에 일관됩니다.
다른 GNU 확장을 사용하면 더 명확해질 수 있습니다.
sed -e '5i\' -e '\n\n\n'
-e
모호함을 피하기 위해 명령과 텍스트는 두 개의 인수로 분리됩니다 .