在同一行中搜索重复项

在同一行中搜索重复项

我喜欢该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保存行号,因此我们用它来打印行号。

相关内容