Мне нравится что uniq
команда делает, но она ищет дубликаты на различных строках. Я хотел бы найти дубликаты даже в той же строке. какая команда может сделать это?
Рассмотреть this line this this line
, и это, которое я мог бы хотеть знать, сколько раз "это" появляется в той же строке.
Существует ли команда, которая может сделать это?
Другой способ использовать awk
:
echo "this line this this line"| \
awk 'BEGIN{print "count", "lineNum"}{print gsub(/\<this\>/,"") "\t" NR}'
count lineNum
3 1
, Который печатает количество и номер строки, в котором this
слово нашло.
gsub()
возвращаемое значение функции является количеством сделанной замены. Таким образом, мы используем это для печати числа.
NR
содержит номер строки, таким образом, мы используем его для печати номера строки.
Можно сделать:
grep -Eo '[^[:blank:]]+' file.txt | sort | uniq -c
grep -Eo '[^[:blank:]]+'
получает слова файла, разделенного любым пробелом (пробелами)
sort
виды, вывод
uniq -c
получает cound слов
Пример:
% grep -Eo '[^[:blank:]]+' <<<'this line this this line' | sort | uniq -c
2 line
3 this