Regex sed插入行命令OSX
我正在尝试使用sed将文本插入到文件的第三行,我在其他论坛上找到的语法是:Regex sed插入行命令OSX,regex,macos,sed,insert,Regex,Macos,Sed,Insert,我正在尝试使用sed将文本插入到文件的第三行,我在其他论坛上找到的语法是: sed -i '' "3i\ text to insert" file 但是,当我使用此选项时,会出现一个错误: sed: 1: "3i\ text to insert": extra characters after \ at the end of i command 我似乎不知道是什么引起了这个问题。我正在使用OSX,这就是为什么我有一个空的“”作为扩展名 谢谢 在OSX上,您可以使用: sed -i.bak '
sed -i '' "3i\ text to insert" file
但是,当我使用此选项时,会出现一个错误:
sed: 1: "3i\ text to insert": extra characters after \ at the end of i command
我似乎不知道是什么引起了这个问题。我正在使用OSX,这就是为什么我有一个空的“”作为扩展名
谢谢 在OSX上,您可以使用:
sed -i.bak '3i\
text to insert
' file
您应该在
\
后面直接添加一个换行符:
sed '3i\
text to insert' file
这实际上是由定义的行为。GNU sed允许您指定要插入到同一行的文本,这是一个扩展
如果出于某种原因需要在sed命令周围使用双引号,则必须在第一行末尾转义反斜杠:
sed "3i\\
text to insert" file
这是因为shell首先处理双引号字符串,然后删除后跟换行符的\
:
$ echo "abc\
def"
abcdef
下面是如何用一行语法完成的
sed -i '' -e "2s/^//p; 2s/^.*/text to insert/" file
- 重复第二行:
2s/^//p代码>
- 用文本替换新行:
2s/^.*/text to insert/
- 这对我很有用
sed -i '' '3i\
text to insert' file
如果要修改特定文件类型的文件(在本例中为(.sh),请使用此命令
sed -i '.sh' '3i\
mymodified text to insert' temp.sh
确保斜杠(“\”)后有换行符,OSX使用ANSI-C引用的一行代码:
sed -i '' '3i\'$'\n''text to insert' file
改编自我发现我必须在要插入的行的末尾插入\,否则它会将其连接到原始行的开头。所以,如果我想插入新的第三行
sed -i '' '3i\<br>
New line to be inserted.\<br>
' file
sed-i''3i\
要插入的新行。\
"档案"
我想再加一个+1,指出“在3i
位后插入的文本”是GNU扩展(但我只能给出其中一个)。@JonathanLeffler我将代表您授予他另一个+1:-)我相信这种方法可以在任意两行n和n+1之间添加一行。但是,在尝试对第一行执行此操作时,您会遇到中所述的问题