-2

スペースが区切られた大きな列単位のテキスト ファイルがあります。

Name  subject       Result
John  maths         pass
John  science       fail
John  history       pass
John  geography     pass
Jack  maths         pass
jack  history       fail
kelly science       pass
kelly history       pass

名前ごとにカウントしたい (これは長い名前のリストであり、各名前は 1 回だけ表示される必要があります)、合格した数です。たとえば。ジョンの場合、彼は 3 に合格し、同様にジャックの場合は 1 に合格しました。結果は次のように出力されます。

Name  Passcount
John   3
Jack   1
Kelly  2

誰でも awk または perl スクリプトを手伝ってもらえますか? 前もって感謝します

4

1 に答える 1

1

あなたはこのようなことを試すことができます -

awk '
BEGIN{ print "Name\tPasscount"} 
NR>1{if ($3=="pass") a[$1]++}
END{ for (x in a) print x"\t"a[x]}' file

テスト:

$ cat file
Name  subject       Result
John  maths         pass
John  science       fail
John  history       pass
John  geography     pass
Jack  maths         pass
jack  history       fail
kelly science       pass
kelly history       pass

$ awk 'BEGIN{ print "Name\tPasscount"} NR>1{if ($3=="pass") a[$1]++}END{ for (x in a) print x"\t"a[x]}' file
Name    Passcount
Jack    1
kelly   2
John    3
于 2012-06-06T20:33:40.337 に答える