2

私はgrep -f、一方のファイルからパターンを取得し、もう一方のファイルから行を抽出するために使用してきました。結果は次のようになります。

1   11294199    11294322    40  10  123 0.0813008
1   11294199    11294322    41  6   123 0.0487805
1   11294199    11294322    42  10  123 0.0813008
1   11294199    11294322    43  2   123 0.0162602
1   11293454    11293544    51  1   90  0.0111111
1   11293454    11293544    52  2   90  0.0222222
1   11291356    11291491    54  6   135 0.0444444
1   11291356    11291491    55  8   135 0.0592593
1   11291356    11291491    56  3   135 0.0222222

次に、最初の3つの列に基づいて結果をグループ化し、各グループの列4の合計を計算する必要があります。

1   11294199    11294322  (40+41+42+43)
1   11293454    11293544  (51+52)
1   11291356    11291491  (54+55+56)

どうすればそのような結果を得ることができますか?これを達成するためのgrepのオプションはありますか?どうも

4

1 に答える 1

5

あなたはあなたがawkしたいことをする必要があるでしょう。これを試して:

awk '{ array[$1 "\t" $2 "\t" $3] += $4 } END { for (i in array) print i "\t" array[i] }' file.txt

結果:

1   11294199    11294322    166
1   11291356    11291491    165
1   11293454    11293544    103

HTH

于 2012-06-19T04:35:46.300 に答える