Принятый ответ @Joseph R. с историей хорош, но давайте посмотрим, как его можно использовать.
ptx
генерирует переставленный индекс термина ("ptx") из текста. Пример проще всего понять:
$ cat input
a
b
c
$ ptx -A -w 25 input
:1: a b c
:2: a b c
:3: a b c
^^^^ ^ ^^^^-words to the input's right
| +-here is the actual input
+-words to the input's left
Внизу справа вы видите разные слова из ввода и окружающий их левый и правый контекст . Первое слово «а». Это происходит в первой строке и сопровождается "b" и "c" справа. Второе слово - это «b», которое встречается во второй строке с «a» слева и «c» справа. Наконец, «c» встречается в третьей строке и сопровождается «a» и «b».
Используя это, вы можете найти номер строки и окружающие слова для любого слова в тексте. Это звучит очень похоже grep
, а? Разница в том, что ptx
понимает структуру текста, в логических единицах слов и предложений. Это делает контекстный вывод ptx
более актуальным при работе с английским текстом, чем grep.
Давайте сравним ptx
и grep
, используя первый абзац американского таблоида Джеймса Эллроя :
$ cat text
America was never innocent. We popped our cherry on the boat over and looked back with no regrets. You can’t ascribe our fall from grace to any single event or set of circumstances. You can’t lose what you lacked at conception.
Вот grep
(с изменением цвета вручную, чтобы быть окруженным //
):
$ grep -ni you text
1:America was never innocent. We popped our cherry on the boat over and looked back with no regrets. /You/ can’t ascribe our fall from grace to any single event or set of circumstances. /You/ can’t lose what /you/ lacked at conception.
Вот ptx
:
$ ptx -Afo <(echo you) text
text:1: /back with no regrets. You can’t ascribe our fall/
text:1: /or set of circumstances. You can’t lose what you/
text:1: /. You can’t lose what you lacked at conception.
Поскольку grep
он ориентирован на строки, и этот абзац состоит из одной строки, grep
выходные данные не так кратки или полезны, как выходные данные из ptx
.