2

次のような行を含むファイルがあります

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

どんな助けでも大歓迎です

4

3 に答える 3

2

入力順序を保持するには:

$ 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
于 2013-10-24T20:01:29.233 に答える
2

あなたを使用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
于 2013-10-24T14:59:19.783 に答える