A resposta aceita de @Joseph R. com a história é boa, mas vamos ver como isso pode ser usado.
ptx
gera um índice de termos permutados ("ptx") do texto. Um exemplo é mais fácil de entender:
$ ptx -A -w 25 <<< $'a\nb\nc'
:1: a b c
:2: a b c
:3: a b c
Na direita, você vê as diferentes palavras da entrada e o contexto da palavra esquerda e direita ao redor delas. A primeira palavra é "a". Ocorre na linha um e é seguido por "b" e "c" à direita. A segunda palavra é "b", que ocorre na linha dois com "a" à esquerda e "c" à direita. Finalmente, "c" ocorre na linha três e é processado por "a" e "b".
Usando isso, você pode encontrar o número da linha e as palavras ao redor de qualquer palavra em um texto. Isso soa muito como grep
, hein? A diferença é que ptx
entende a estrutura do texto, em unidades lógicas de palavras e sentenças. Isso torna a saída contextual de ptx
mais relevante ao lidar com o texto em inglês do que com o grep.
Vamos comparar ptx
e grep
, usando o primeiro parágrafo do Tabloide americano de James Ellroy :
$ 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.
Este é o grep
(com as correspondências de cores alteradas manualmente para ficar entre //
):
$ 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.
Aqui está o 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.
Como grep
é orientado à linha, e este parágrafo é uma linha, a saída grep
não é tão concisa ou útil quanto a saída de ptx
.