【发布时间】:2016-03-20 04:19:05
【问题描述】:
我想在行号指定的行的开头插入一个单词,使用 sed。这个oneliner有效:
line="this is my line"; newfile=`sed "6s/.*/word $line/" /opt/file.txt`
但我的问题是,当我在脚本中运行代码时会引发错误:
line="this is my line"
newfile=`sed "6s/.*/word $line/" $FILE_PATH`
sed: -e expression #1, char 91: unknown option to `s'
Sed 版本:GNU sed 版本 4.1.5
【问题讨论】:
-
在脚本中它也在工作
-
你确定你只是按照你说的做吗(即:
$line的值不包含特殊字符)?它应该工作。请注意,如果您想添加该行而不是替换它,则应为:sed "6s/^/word $line/" -
你应该双引号你的 FILE_PATH 变量:
"$FILE_PATH"。 -
@bufh 你说得对,为了便于阅读,我编辑了
$line,它实际上包含一个括号[,即字符91。我可以在不编辑$line的情况下从命令中转义括号吗? ? -
@bufh 我改用了你的前置语法,它工作得很好,谢谢! =)