次のような行を含むファイルがあります
a x1
b x1
q xq
c x1
b x2
c x2
n xn
c x3
各行の最初のフィールドでテストしたいと思います。一致する場合は、一致する行を最初の行に追加したいと思います。出力は次のようになります
a x1
b x1 b x2
q xq
c x1 c x2 c x3
n xn
どんな助けでも大歓迎です
入力順序を保持するには:
$ awk '
{
if ($1 in vals) {
prev = vals[$1] " "
}
else {
prev = ""
keys[++k] = $1
}
vals[$1] = prev $0
}
END {
for (k=1;k in keys;k++)
print vals[keys[k]]
}
' file
a x1
b x1 b x2
q xq
c x1 c x2 c x3
n xn
あなたを使用awk
すると、これを行うことができます:
awk '{arr[$1]=arr[$1]?arr[$1] " " $0:$0} END {for (i in arr) print arr[i]}' file
n xn
a x1
b x1 b x2
c x1 c x2 c x3
q xq