【问题标题】:How to add text at the beginning of specific lines using sed?如何使用 sed 在特定行的开头添加文本?
【发布时间】:2019-09-21 14:16:52
【问题描述】:

我想在字符下方的每一行的开头添加一些文本。在终端中使用 sed。

例如。如果我有一个 textA.txt

@PL123
abcd
+
linewithmoretext
@PL456
efgh
+
2ndlinewithmoretext

以此类推,还有更多行遵循相同的结构。

我希望我的输出是:textB.txt

@PL123
PREFIXabcd
+
linewithmoretext
@PL456
PREFIXefgh
+
2ndlinewithmoretext

我试过了

sed 's/^/PREFIX/' textA.txt > textB.txt 

但这会在所有行的开头插入 PREFIX。但我希望它更具体,说我希望在包含@PL 的行下方的每一行的开头都有 PREFIX。 任何人都可以帮助我吗?非常感谢。

【问题讨论】:

    标签: linux sed


    【解决方案1】:

    只需使用 awk:

    $ awk '{print (prev ~ /^@PL/ ? "PREFIX" : "") $0; prev=$0}' file
    @PL123
    PREFIXabcd
    +
    linewithmoretext
    @PL456
    PREFIXefgh
    +
    2ndlinewithmoretext
    

    【讨论】:

      【解决方案2】:

      每当找到@PL 时,请阅读下一行并将PREFIX 添加到它的前面。

      sed '/@PL/{n;s/^/PREFIX/}' file
      

      【讨论】:

        【解决方案3】:

        我试过了

        sed '/@PL/aline' 
        

        然后

        perl -pi -e 's[line\n][PREFIX]g' 
        

        它也有效。但是你的代码更简单,所以我会使用它们。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-04-15
          • 2011-05-04
          • 2019-01-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多