我有一个带有5列的制表符分隔文件,需要从第2列检索只有唯一行数的计数.我通常会使用Perl/Python来执行此操作,但我不得不使用shell进行此操作.
我已经成功地使用了*nix uniq函数管道到wc,但看起来我将不得不在这里使用awk.
任何建议将不胜感激.(我之前已经问过一个类似的问题,关于使用awk的列检查,但这有点不同,我想将它分开,所以如果将来有人有这个问题,这将会在这里)
非常感谢!
礼来公司
unw*_*ind 18
不需要使用awk.
$ cut -f2 file.txt | sort | uniq | wc -l
Run Code Online (Sandbox Code Playgroud)
应该这样做.
这使用了tab是cut默认字段分隔符的事实,因此我们将通过这种方式获得第二列中的内容.然后传递sort作为前期工作uniq,删除重复.最后我们计算线,这是寻求的数字.
我去
$ cut -f2 file.txt | sort -u | wc -l
Run Code Online (Sandbox Code Playgroud)
至少在某些版本中,uniq依赖于正在排序的输入数据(它仅查看相邻的行).
例如,在Solaris文档中:
uniq实用程序将读取比较相邻行的输入文件,并在输出上写入每个输入行的一个副本.不会写入重复的相邻输入行的第二个和后续副本.
如果它们不相邻,则不会检测到输入中的重复行.