sed mac 큰따옴표를 사용하여 특정 줄에 텍스트 추가

sed mac 큰따옴표를 사용하여 특정 줄에 텍스트 추가

나는 이것을 OSX에서 파일에 한 줄을 추가하기 위해 sed를 사용하는 시작 가이드로 사용하려고 합니다. https://stackoverflow.com/questions/25631989/sed-insert-line-command-osx

sed -i '.json' '2i\
this is a test place
    ' dummy.txt

위의 내용은 유효합니다. 하지만 확장해야 하므로 간단한 것부터 시작하고 큰따옴표로 바꾸세요.

sed -i '.json' "2i\
this is a test place
    " dummy.txt

내가 왜 그런 말을 듣나요 command i expects \ followed by text? 아니면 Mac에서 큰따옴표를 사용하여 특정 줄에 텍스트를 추가하는 방법은 무엇입니까?

답변1

$ sed "2i\\
These are words on\\
multiple lines\\
" input
1
These are words on
multiple lines
2
3
4
5
6
7
8
9
10

쉘 대신 sed이스케이프하는 리터럴 줄 바꿈을 구문 분석하고 이스케이프하도록 백슬래시를 이스케이프해야 합니다 .sed

$ sed '2i\
thing' input

큰 따옴표를 사용하면 모든 내용이 문자 그대로 전달되므로 sed다음을 참조하세요.<2> <i> <literal linefeed>

$ sed "2i\
thing" input

약한 따옴표를 사용하면 문자열을 구문 분석할 때 쉘이 먼저 권한을 얻습니다. 따라서 sed보시다시피 <2> <i> <linefeed>이는 구문 오류입니다.

관련 정보