我尝试将其用作使用 sed 在 OSX 中的文件中添加一行的入门指南。 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
而不是 shell。
$ sed '2i\
thing' input
通过强引号,一切都按字面意思传递,所以sed
看到<2> <i> <literal linefeed>
$ sed "2i\
thing" input
使用弱引号,shell 在解析字符串时首先获得权限,因此sed
会看到<2> <i> <linefeed>
,这是一个语法错误。