首页 > 解决方案 > 从下一行获取值并合并-awk

问题描述

我有一个像这样的管道分隔文件

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

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

输出

232322|123432
232324|1234452
232325|656966

我在这里查看了答案如何从命令行将每两行合并为一行?. 我知道这不是确切的解决方案,而是用作起点。

并试图让它解决这个问题,但会引发语法错误。

awk -F "|" 'NR%2{OFS = "|" printf "%s ",$0;next;}1'

标签: awktext-processing

解决方案


你可以使用这个awk

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

232322|123432
232324|1234452
232325|656966

推荐阅读