【问题标题】:Insert word at beginning of line using sed and line number使用 sed 和行号在行首插入单词
【发布时间】: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 我改用了你的前置语法,它工作得很好,谢谢! =)

标签: linux bash sed


【解决方案1】:

似乎您在 $line 中有一些符号,而 sed 不能在不转义的情况下使用它们。字符 91 是“[”

试试这个:

line='this is my line'
newfile=`sed "6s/.*/word $line/" $FILE_PATH`

或者这个

line="this is my line"
newfile=`sed '6s/.*/word '$line'/' $FILE_PATH`

也许会有所帮助

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 1970-01-01
  • 2017-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多