从下一行获取值并合并 - awk

Get values from the next row and merge- awk

我有一个像这样的竖线分隔文件

    OLD|123432
    NEW|232322
    OLD|1234452
    NEW|232324
    OLD|656966
    NEW|232325

我正在尝试创建一个新文件,并在其中尝试根据第一列 (OLD/NEW) 中的值合并行。输出文件中的第一列将包含新编号,第二列将包含旧编号。

输出

232322|123432
232324|1234452
232325|656966

我在这里看了答案How to merge every two lines into one from the command line?。我知道这不是确切的解决方案,但用作起点。

并试图让它解决这个问题,但抛出语法错误。

awk -F "|" 'NR%2{OFS = "|" printf "%s ",[=12=];next;}1'

你可以使用这个awk:

awk 'BEGIN {FS=OFS="|"}  == "NEW" {print , old}  == "OLD" {old = }' file

232322|123432
232324|1234452
232325|656966

使用[=12=]会有整行的值。如果字段分隔符是管道,则第二列是 </code>,其中包含数字。</p> <p>如果要将余数与 <code>NR%2 一起使用,另一种选择是将第二列的值存储在变量中,例如 v

awk 'BEGIN{FS=OFS="|"} NR%2{v=;next;}{print ,v}' file

输出

232322|123432
232324|1234452
232325|656966