Awk:最初のフィールドで重複IDを持つ行の内容をマージする方法

Awk:最初のフィールドで重複IDを持つ行の内容をマージする方法

最初のフィールドに重複した値を持つファイルがあります。ファイルには合計4つのフィールドがあります。残りの3つのフィールドの値をマージしたいと思います。

入力ファイル:

123|abc123||GFD
234|xyz456|tsdrf34526|KLD
123||cdft091|GFD
123|abc123|cdft091|GFD
456|sdf872||LHG

希望の出力:

123|abc123|cdft091|GFD
234|xyz456|tsdrf34526|KLD
456|sdf872||LHG

誰でも助けることができますか?

答え1

awk緊急の要件を満たすと思われるプログラムは次のとおりです。

#!/bin/awk -f
BEGIN {FS = "|"; OFS="|"}
{
    a[$1]++
    f1[$1] = $2
    f2[$1] = $3
    f3[$1] = $4
}
END { for (i in a) print i, f1[i], f2[i], f3[i] }

関連情報