Reb*_*ifa 6 grep awk text-processing wc
我想计算此演示文稿的文本文件中不同名称的数量:
2008 girl Avah
2009 girl Avah
2008 girl Carleigh
2011 girl Kenley
2012 boy Joseph
2013 boy Joseph
2014 boy Isaac
2014 boy Brandon
Run Code Online (Sandbox Code Playgroud)
所以基本上我想跳过重复并作为答案 6。我试图awk只访问第三列,但我无法让它打印行数。
与awk:
<fileName awk '!nameSeen[$3]++{ count++ } END{ print count }'
Run Code Online (Sandbox Code Playgroud)
如果找到新名称,则!nameSeen[$3]++递增计数器count++和END打印计数器值。
由于您的文件出现在名称列进行预排序,你可以用uniq与-f(--skip-fields)选项仅输出每个名称的第一行,计算行:
uniq -f2 FileName | wc -l
Run Code Online (Sandbox Code Playgroud)
或者
uniq --skip-fields=2 FileName | wc -l
Run Code Online (Sandbox Code Playgroud)
如果您的数据没有预先排序,你可以结合sort -u使用-k字段规范来实现同样的事情(尽管它没有明确的记载GNUsort手册页):
sort -uk3 FileName | wc -l
Run Code Online (Sandbox Code Playgroud)
对于这项任务来说太过分了,但是您也可以使用 GNU Datamash:
datamash -W countunique 3 < FileName
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
695 次 |
| 最近记录: |