gda*_*tor 11 macos bash sed insert
我正在尝试使用sed将文本插入文件的第三行,我在其他论坛上找到的语法是:
sed -i '' "3i\ text to insert" file
Run Code Online (Sandbox Code Playgroud)
但是,当我使用它时,我收到一个错误:
sed: 1: "3i\ text to insert": extra characters after \ at the end of i command
Run Code Online (Sandbox Code Playgroud)
我似乎无法弄清楚导致问题的原因.我正在使用OSX,这就是为什么我有一个空的''作为我的扩展.
谢谢!
Tom*_*ech 30
您应该在以下后面直接添加换行符\
:
sed '3i\
text to insert' file
Run Code Online (Sandbox Code Playgroud)
这实际上是POSIX规范定义的行为.GNU sed允许您指定要在同一行上插入的文本的事实是扩展.
如果由于某种原因你需要在sed命令周围使用双引号,那么你必须在第一行末尾转义反斜杠:
sed "3i\\
text to insert" file
Run Code Online (Sandbox Code Playgroud)
这是因为shell首先处理双引号字符串,\
然后删除换行符:
$ echo "abc\
def"
abcdef
Run Code Online (Sandbox Code Playgroud)
anu*_*ava 14
在OSX上,您可以使用:
sed -i.bak '3i\
text to insert
' file
Run Code Online (Sandbox Code Playgroud)
Joe*_*eer 12
OSX 的单行代码采用 ANSI-C 引用:
sed -i '' '3i\'$'\n''text to insert' file
Run Code Online (Sandbox Code Playgroud)
以下是如何用一行语法做到这一点
sed -i '' -e "2s/^//p; 2s/^.*/text to insert/" file
Run Code Online (Sandbox Code Playgroud)
重复第二行: 2s/^//p;
用您的文本替换新行: 2s/^.*/text to insert/
归档时间: |
|
查看次数: |
15865 次 |
最近记录: |