【问题标题】:How to write multiple sed commands in a file?如何在一个文件中写入多个 sed 命令?
【发布时间】:2015-03-04 14:28:34
【问题描述】:

我想使用 sed 命令/^$d 从文件中删除空白行,然后我想在文件末尾添加一行。所以当我尝试在我的命令文件中这样做时

/^$/d \
$ a \
My color is blue

然后执行我得到和错误说:第一行命令后的额外字符。我读到你在结束行命令时使用'\' 为什么它读取它作为额外的字符???

【问题讨论】:

  • 不要继续'\'第一行。
  • \ 仅用作模式中的换行符(s/////,//)或追加、插入(a \ i \ [无尾随空格])及其以下文字线

标签: bash sed


【解决方案1】:

您的错误是第一行末尾的延续 \ 字符。

您需要在第二行(用于a 命令)为a 命令添加一些内容,但在看到行尾时第一个命令已完成。继续这行,你会混淆sed,因为它认为这些命令是一起运行的。

【讨论】:

    【解决方案2】:

    补充Etan Reisner's有用的答案:

    • 总是可以将 complete sed 命令放在单独的行上。
    • 相反,如果换行符是单个命令的部分(例如本例中的a函数调用),则必须\-escape它。

    【讨论】:

      【解决方案3】:

      如果您想尝试,这里有一个awk 解决方案:

      awk 'NF; END {print "new line"}' file
      

      NF 仅当行中有一些字段时才为真,即有数据。
      END {print "new line"} 这会在文件末尾添加一行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-28
        • 2018-08-30
        • 2014-08-31
        • 1970-01-01
        • 1970-01-01
        • 2016-03-07
        • 2018-06-29
        相关资源
        最近更新 更多