次の形式のシンボルテーブル(キーと値のペア)があります。
01 aaluu desii
01 aaluu cipsa
01 amaruuda ilaahabaadii
02 hai
02 nahii
02 txamaatxara
まず(同じキーに対応する)単語を同じ行に入れる必要があります。
予想される出力は次のとおりです。
01 aaluu desii aaluu cipsa amaruuda ilaahabaadii
02 hai nahii txamaatxara
入力ファイルと出力ファイルには、キーと値を区別するタブ文字があることに注意してください。
答え1
awkを使用してください:
awk '{for (i=2; i<=NF; i++) {a[$1]=a[$1]" "$i}} END{for ( i in a){print i"\t"a[i]}}'
a
インデックス(キー)を持つ配列を作成し、行の$1
最初のフィールドを除くすべてのフィールドを配列に追加します。これは、同様のキーを持つすべての行に対してこれを行います。
END
配列インデックスを繰り返し、a
キーと値の間にタブ区切り文字を使用して、配列インデックス(キー)と配列内容(値)を印刷します。
答え2
sed '
:1 #just mark
N #append next line
s/^\(\([0-9]\+\s\+\).*\)\n\2/\1 / #compare nums in the line beginning
t1 #if prev succeed return to mark
P #print before \newline
D #delete before \newline, go to start
' <(sort -k1n table.file)