Compile lista de palavras da lista de arquivos

1

Como alguém poderia assumir essa tarefa?

Eu tentei fazer isso com o tr e inventar isso (com ajuda de outra pergunta semelhante):

tr -c '[:alnum:]' '[\n*]' < long_concatenated_file

mas .. É um pouco problemático. :alnum: é apenas a lista de caracteres & números. Eu tentei mitigar isso depois de ler man :

tr -c '[:alnum:=-=]' '[\n*]' < long_concatenated_file

que deveria ter incluído palavras com traços nelas na lista de coisas a serem substituídas, mas não, não por algum motivo.

Qual seria a maneira correta de assumir essa tarefa?

Para maior clareza, o objetivo final é aplicar sort | uniq -c | sort -nr a ele, para identificar as strings mais usadas no projeto, para que eu possa convertê-las em constantes convenientes; Se minha abordagem do problema é completamente sem sentido e eu deveria abordá-lo de outra maneira, por favor sugira algo.

    
por Mikhail Krutov 28.06.2018 / 13:49

2 respostas

3

Parece que você deseja substituir todos os caracteres não verbais (alfanuméricos) por novas linhas e, em seguida, tentar incluir - no conjunto de caracteres que não são de palavras.

Para fazer isso com tr (aqui, também incluí ' como um caractere de palavra válido e uso -s para remover novas linhas consecutivas na saída):

tr -s -c "[:alnum:]-'" '\n'

ou, usando a classe de equivalência [=-=] , como você parece querer fazer:

tr -s -c "[:alnum:][=-=]'" '\n'
    
por 28.06.2018 / 14:04
0

@ Kusalandra, obrigado pela resposta, mas não foi o que eu queria fazer. Meu objetivo era imprimir todas as palavras que consistem em: alnum: set ou '-' em uma linha separada.

A sequência resultante está criando uma nova classe, ou seja:

cat longfile | tr -c '[[:alnum:]-]' '[\n*]'

faz o que eu queria fazer.

exemplo:

$echo aaa-abc asdasd asswdwew | tr -c '[[:alnum:]-]' '[\n*]'
aaa-abc asdasd asswdwew

    
por 28.06.2018 / 22:10

Tags