【问题标题】:Apply awk to everything except for first line将 awk 应用于除第一行之外的所有内容
【发布时间】:2021-01-07 19:01:10
【问题描述】:

我希望应用一些 awk 处理来将单词“OR”添加到每一行的开头,除了 用于第一行。但是,我仍然希望打印出第一行。

目前,我正在使用当前命令:

awk '$0="OR "$0' file.txt

这会给我以下输出:

OR line1
OR line2
OR line3 etc

我怎样才能让它吐出以下内容?:

line1
OR line2
OR line3 etc

【问题讨论】:

    标签: awk sed


    【解决方案1】:

    你可以使用这个 awk:

    awk 'NR > 1 {$0 = "OR " $0} 1' file
    
    line1
    OR line2
    OR line3
    

    这里NR > 1 条件将执行操作块,即$0 = "OR " $0 仅用于第二条记录,但1 将打印所有行。

    【讨论】:

    • @CarlosPascual:应该是awk 'NR>1 && index($0, "OR") != 1{$0 = "OR " $0} 1' file,我们想在行首检查OR的存在
    • 是的,你是对的!我删除评论。
    【解决方案2】:

    sed解决方案

    $ sed '2,$s/^/OR /' file
    

    开始第二行在每行的开头插入“OR”。

    【讨论】:

      【解决方案3】:
      awk 'NR==1 {print} NR>1 {print "OR "$0}'
      

      【讨论】:

        【解决方案4】:

        另一个 awk

        $ cat justin.dat
        line1
        line2
        line3
        line4
        $ awk ' { printf("%s%s\n",sep,$0); sep="OR " } ' justin.dat
        line1
        OR line2
        OR line3
        OR line4
        $
        

        【讨论】:

          【解决方案5】:

          在此处添加另一种方法,使用 GNU awk 中的示例进行编写和测试。

          awk '{print val $0; val="OR "}' Input_file
          

          使用显示的示例,输出将如下所示。

          line1
          OR line2
          OR line3
          OR line4
          

          【讨论】:

            猜你喜欢
            • 2011-05-11
            • 2012-12-18
            • 2010-09-24
            • 2011-03-10
            • 1970-01-01
            • 2012-12-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多