如何在不使用 Shell 脚本的情况下从带有条件的文件获取信息"awk"



我有文件

10 -     William English 80 100 404
10 abc   William Math    50 100 501
10 xyzsd William IT      60 100 550
10 -     William Sec     60 100 401
11 -     John    English 90 100 400
11 -     John    Math    75 100 404
11 ali   John    IT      85 100 550 
11 -     John    Sec     60 100 401

条件:如果第二列为-,则第二条件检查最后一列从4开始的值,然后计算Name(William和John(输出:

3 John
2 William

尝试:

awk -F ' ' '{if ($2 == "-" && $NF ~ /^4/) print $3}' <file_name> | uniq -c

说明:我们使用awk中的if语句来检查两个条件:

  • 如果第二个元素等于'-'
  • 如果最后一个元素以4开头

如果以上两个条件成立,我们将打印名称,存储在第三元素中

uniq-c将计算名称的出现次数

您可以使用此awk:

awk '$2 == "-" && $NF ~ /^4/ { ++freq[$3] }
END { for (i in freq) print freq[i], i }' file
2 William
3 John

最新更新