【问题标题】:Bash: Find matching text and replace next lineBash:查找匹配的文本并替换下一行
【发布时间】:2018-09-07 00:47:39
【问题描述】:

警告:我之前在 stackoverflow 上看到过这类问题。我搜索了很多。遵循解决方案,但无法解决问题。

我有一个变量 $NEW_FILE,它的值是 什么都没有(./location/file1)] 当你回显 $NEW_FILE

我有一个文件 test1.txt,其中包含:

你好,世界!

这不行

我对 sed 和 awk 一无所知

现在我想搜索 word - working 并在 $NEW_FILE 中包含的之后添加一个新行 所以期望的输出是:

你好,世界!

这不行

什么都没有(./location/file1)]

我对 sed 和 awk 一无所知

如何在 bash 中使用 sed 或 awk 实现这一点?

这是我尝试过的: awk '/工作/ {打印;打印 $NEW_FILE;下一个}1' test1.txt

这给出了输出:

你好,世界!

这不行

$NEW_FILE

我对 sed 和 awk 一无所知

有人可以帮我解决这个问题吗?

我认为我们还必须考虑 NEW_FILE 变量中的正斜杠和反斜杠。

【问题讨论】:

    标签: bash awk sed pattern-matching


    【解决方案1】:

    您的 NEW_FILE 可能是 bash 变量,因此不是 awk 中的变量。所以,要么让 bash 做扩展:

    awk '/working/ { print; print "'$NEW_FILE'"; next}1' test1.txt
    

    或从命令行传递/设置变量:

    awk -v NEW_FILE="$NEW_FILE" '/working/ { print; print NEW_FILE; next}1' test1.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-27
      • 2020-07-25
      • 2013-11-08
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      相关资源
      最近更新 更多