当我尝试使用sed在OSX中插入新行时,出现以下错误
extra characters after \ at the end of a command
当前文件内容为
{
'localhost' => ['domain_name' => 'default', 'domain_type' => 'mobile'],
}
预期内容为
{
'localhost' => ['domain_name' => 'default', 'domain_type' => 'mobile'],
'dev.ops' => ['domain_name' => 'default', 'domain_type' => 'mobile'],
}
我正在使用的命令是
sed -i '' "/localhost/a\ 'dev.ops' => ['domain_name' => 'default', 'domain_type' => 'web']," FILENAME
最佳答案
BSD/macOS sed
需要一个实际的换行符来跟随a\
,然后再添加文本:
sed -i '' "/localhost/ a\\
'dev.ops' => ['domain_name' => 'default', 'domain_type' => 'web'],
" FILENAME
"..."
括起sed
脚本,因此a\
必须表示为a\\
,以便\
不会被误认为是行继续符。'...'
来包含脚本参数,但是在这里"..."
的使用很容易嵌入'
实例。 顺便说一句:GNU
sed
-可使用brew install gnu-sed
通过Homebrew在macOS上安装-提供更多功能和更方便的语法-尤其是,不需要换行符即可遵循a
函数;有关BSD/macOS sed
和GNU sed
之间的所有差异的讨论,请参阅我的this answer。
关于macos - 命令末尾\后面的多余字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40843994/