【问题标题】:insert a double backslash using sed使用 sed 插入双反斜杠
【发布时间】:2013-07-01 13:33:42
【问题描述】:

我想插入一行

text \\

通过 sed 进入文件。要插入一个反斜杠,我会在命令中使用三个反斜杠。但是转义不适用于两个反斜杠:

sed -i 'text \\\\\\' $file

给出以下错误:

sed: -e expression #1, char 57: unknown command: `
'

【问题讨论】:

  • char 57: unknown command:?您正在使用的其余命令在哪里?为什么您认为'text \\\\\\' 会对文件产生任何影响,在您显示的内容中没有 sed 命令可以插入、追加、替换(或删除)?祝你好运。
  • 您的示例表明您希望使用 echo \\\\ > 文件。

标签: sed escaping backslash


【解决方案1】:

执行以下操作:

sed -i 's/OLDTEXT/text \\\\/' $file

尝试添加 2 时需要 4 个反斜杠。3 表示 1,4 表示 2 等 :)

【讨论】:

    【解决方案2】:

    使用这样的输入文件:

    apple
    orange
    grape
    

    你可以像这样在orange前面插入text \\

    sed -i 's/^orange/text \\\\\n&/' input.txt
    

    这实际上是匹配以orange 开头的行,将匹配的字符串替换为text \\ + 换行符+ 匹配的字符串,在行前有效地插入text \\,即:

    apple
    text \\
    orange
    grape
    

    请注意,插入 2 个反斜杠需要 4 个反斜杠。我不知道您的意思是 1 的 3 个反斜杠,您一定忽略了那里的某些东西。

    【讨论】:

    • -ie 开关创建一个备份文件,将字母 e 附加到输入文件名,在您的示例中为 input.txte-i 需要一个空间来进行就地修改。至少对于 GNU 版本。也因为-e 不是强制性的,所以它不会抱怨。
    【解决方案3】:

    这可能对你有用(GNU sed):

    sed -i '/PATTERN/i\text \\\\' file
    

    这将覆盖原来的file 并在包含单词PATTERN 的行之前插入text \\

    【讨论】:

      猜你喜欢
      • 2018-12-10
      • 1970-01-01
      • 2019-11-29
      • 1970-01-01
      • 2015-08-29
      • 1970-01-01
      • 2012-06-16
      • 1970-01-01
      • 2010-12-14
      相关资源
      最近更新 更多