0

次の値を持つファイルがあります。

ID1 RID1 2rid1 part2
 ID1 RID2 1rid2 part1
 ID1 RID2 2rid2 part2
 ID2 RID3 1rid3 part1
 ID2 RID3 2rid3 part2
 ID2 RID4 1rid4 part1

ID RID オフセット テキスト。ID、RID、オフセット、テキストはタブ区切りです。テキストは、間にスペースを入れた複数の単語にすることができます。

RID と昇順オフセットに基づいてそれらを連結しようとしています。

基本的に、望ましい出力は

ID2 RID3rid3part1rid3part2
ID2 RID4rid4 part1
ID1 RID1rid1part1rid1part2
ID1 RID2rid2part1rid2part2

私はこれをawkでやろうとしています。ここに私の awk 1 ライナーがあります:

猫の例.txt| awk '{line=""; 行 = 行 $4; table[$1"\t"$2]=table[$1"\t"$2] line;} END {for (key in table) print key"\t"table[key];}'

何らかの理由で、awk は $4 のすべての単語を解析できません。つまり、最初の単語を選択して出力するだけです。

ID2 RID3rid3rid3
ID2 RID4rid4
ID1 RID1rid1rid1
ID1 RID2rid2rid2

最初の単語だけでなく、$4 のすべての単語を解析するにはどうすればよいですか?

4

2 に答える 2

1

私は次のようなものを提案します:

awk -F " " '{key=$1" "$2; value=$4" "$5; if(! key in t){t[key]=value} else {t[key]=t[key]""value}} END {for (key in t){print key" "t[key]}}' file|sort -rt' ' -k1

よろしく、 イドリス

于 2013-10-21T22:32:33.690 に答える