我喜欢该uniq
命令的功能,但它会在不同的行上查找重复项。我希望在同一行内查找重复项。哪个命令可以做到这一点?
考虑一下this line this this line
,并且我可能想知道“this”在同一行出现了多少次。
是否有命令可以做到这一点?
答案1
你可以做:
grep -Eo '[^[:blank:]]+' file.txt | sort | uniq -c
grep -Eo '[^[:blank:]]+'
获取文件中由空格分隔的单词sort
对输出进行排序uniq -c
获取单词数量
例子:
% grep -Eo '[^[:blank:]]+' <<<'this line this this line' | sort | uniq -c
2 line
3 this
答案2
另一种方式使用awk
:
echo "this line this this line"| \
awk 'BEGIN{print "count", "lineNum"}{print gsub(/\<this\>/,"") "\t" NR}'
count lineNum
3 1
打印出找到的单词的数量和行号
this
。gsub()
函数的返回值是所进行的替换次数。因此我们使用它来打印该数字。NR
保存行号,因此我们用它来打印行号。