我想过滤文件中包含的所有行,mySearchString
然后将它们组合在一起并计算它们。
示例查找包含的所有行9791
AB-9791___Foo
AB-9791___Foo
DE-9791___Bar
AB-0001___Foo
使用 $ grep "9791" myFile.txt
给出了这个结果
AB-9791___Foo
AB-9791___Foo
DE-9791___Bar
// 0001 was filtered out
这个结果应该像这样分组和计数(如 SQL Group by Count
)
AB-9791___Foo 2
DE-9791___BAR 1
这个答案使用 perl,但我们的机器上没有安装 perl。
什么工具(grep、awk、sed或其他)可用于实现第二部分的分组和计数?
更新测试记录
在我的测试文件Test_2.txt
中,这些行是写的
AB-9791___Foo
DE-9791___Bar
AB-0001___Foo
AB-9791___Foo
AB-9791___Foo
AB-9791___Foo
DE-9791___Bar
DE-9791___Bar
DE-9791___Bar
我复制并粘贴了每一AB-9791___Foo
行,所以它们应该是相同的。运行$ grep '9791' Test_grep_uniq_sort.txt | uniq -c
给出了这个结果
1 AB-9791___Foo
1 DE-9791___Bar // expected: 4 actual: 1, 2, 1
3 AB-9791___Foo // expected: 4 actual: 1, 3
2 DE-9791___Bar
1 DE-9791___Bar
运行$ sort Test_2.txt > Test_2_sort_0.txt
然后使用grep | uniq
onTest_2_sort_0.txt
几乎返回了预期的输出。
$ grep '9791' Test_2_sort_0.txt | uniq -c
4 AB-9791___Foo
1 DE-9791___Bar // this is due to a missing line break / line feed
3 DE-9791___Bar
手动添加换行符/换行符后一切正常
你必须
sort
在文件之前。你可以像这样使用
grep
和uniq
:uniq -c
对于计数和awk
交换列:这里有一些想法:https ://stackoverflow.com/questions/8627014/count-number-of-similar-lines-in-a-file