I нашел в другом ответе SE , inxi
как очень удобный инструмент:
inxi -Dxx
Drives: HDD Total Size: 810.2GB (42.9% used)
ID-1: /dev/sdc model: ST3160827AS size: 160.0GB serial: 5MT2HMH6
ID-2: /dev/sdb model: WDC_WD3200JD size: 320.1GB serial: WD-WCAMR1302926
ID-3: /dev/sda model: ST380817AS size: 80.0GB serial: 4MR2EWBE
ID-4: /dev/sdd model: ST3250824AS size: 250.1GB serial: 9ND08GKX
Отредактировано: добавлены install и demo
Необходимо позаботиться хотя бы о некоторых крайних случаях, таких как
The the apple
. ( ( a + b) + c )
(повторяющиеся открывающие скобки. тезис
В целом я рекомендую pcregrep
решение:
pcregrep -Min --color=auto '\b([^[:space:]]+)[[:space:]]+\1\b' file
Очевидно, что цвет и номер строки (опция n
) необязательны, но обычно приятны.
В дистрибутивах на базе Debian вы можете установить через:
$ sudo apt-get install pcregrep
Выполните команду на jefferson_typo. txt
, чтобы увидеть:
$ pcregrep -Min --color=auto '\b([^[:space:]]+)[[:space:]]+\1\b' jefferson_typo.txt
1:He has has refused his Assent to Laws, the most wholesome and necessary
3:He has forbidden his Governors to pass Laws of immediate and
and pressing importance, unless suspended in their operation till his
5:Assent should be be obtained; and when so suspended, he has utterly
Выше просто захват текста, но на терминале с поддержкой цвета совпадения окрашиваются:
Вам следует взглянуть на почтенные команды diction (1)
и style (1)
. Они ловят самые разные бу-бу. Есть новые версии (GPLv3 здесь, на Fedora 23).
Например, в дистрибутивах на основе Debian установите пакет diction
, который включает стиль
:
$ sudo apt-get install diction
По крайней мере, в Fedora это:
$ dnf install diction
Красный Hat Enterprise (и клонам), вероятно, потребуются:
$ yum install diction
В любом случае, это происходит из пакета исходной разработки GNU под названием diction
, поэтому его следует называть одинаковым почти везде.
$ diction jefferson_typo.txt
jefferson_typo.txt:1: He has [has] refused his Assent to Laws, the [most] wholesome and necessary for the public good.
jefferson_typo.txt:3: He has forbidden his Governors to pass Laws of immediate and [and] pressing importance, unless suspended in their operation till his Assent should be [be] obtained; and when [so] suspended, he has utterly neglected to attend to them.
2 phrases in 2 sentences found.
Pros
Cons
[]
маркировку для элементов, не связанных с повторяющимися словами. Например, [so]
, вероятно, отмечен, потому что он может считаться посторонним согласно The Elements of Style от Strunk . См. man diction
[be]
- это исходная строка ввода с номером 5, но здесь он показывает 3
только потому, что [be]
является частью предложения, начинающегося в строке 3
. Это немного отличается от того, что вы хотели Поскольку вы отметили этот вопрос с помощью awk
, почему бы просто не использовать awk
?
$ awk '
BEGIN{RS=FS="\\W+"}
$0==t{printf("%s:%s\t%s %s\n", FILENAME, FNR, t, $0)}
{t=$0}
' *.txt
highlander_typo.txt:6 one one
jefferson_typo.txt:3 has has
jefferson_typo.txt:29 and and
jefferson_typo.txt:42 be be
kylie_minogue.txt:3 la la
Я не сохранил новую строку в jefferson_typo.txt
, потому что он не
визуально полезен для меня, но вы можете настроить его по своему вкусу.
В качестве дополнения к ответу фонбранда re: инструмент командной строки 'diction'
Если вы хотите искать только повторяющиеся слова и отключите с другими элементами стиля вы можете сделать что-то вроде этого:
diction -n file_to_scan.txt --file empty_file.txt
Флаг -n
указывает ему игнорировать встроенный список слов. Однако он не будет работать без списка слов, поэтому - файл empty_file.txt
, где empty_file.txt
- пустой файл, дает ему список пустых слов.
Итак, единственное, что он делает, это распознает повторения слов.