Existe uma maneira melhor de fazer este comando para encontrar strings em um arquivo excluindo caracteres especiais?

1

Existe uma maneira melhor de fazer esse comando para encontrar strings em um arquivo excluindo caracteres especiais?

Atualmente estou fazendo:

strings file.abc | grep -v \= | grep -v \] | grep -v \) | more

Gostaria de adicionar mais caracteres especiais, por isso só recebo a-z e A-Z nos resultados.

    
por Jeff 11.04.2013 / 20:11

2 respostas

3

Se você quiser excluir apenas esses caracteres especiais, poderá usar expressões regulares (por exemplo, PCRE assim:

strings file.abc | grep -Pv "[=\])]"

Se você quiser exibir apenas strings contendo alguns caracteres específicos, você pode usar grep em vez de strings.

O comando

grep -Poa "[A-Za-z]{4,}" file.abc

mostra todas as palavras com pelo menos quatro letras.

Aqui:

  • A opção -o faz com que o grep mostre apenas a correspondência (em vez da linha inteira).
  • A opção -a força o tratamento de um arquivo binário como um arquivo de texto.
  • O PCRE [A-Za-z]{4,} corresponde a quatro ou mais letras consecutivas.

    Quatro é o número padrão que strings usa. Ajuste conforme necessário.

por 11.04.2013 / 20:44
1

Que tal

strings file.abc | grep '^[A-Za-z]*$'

?

Isso fornecerá apenas linhas consistindo apenas de letras.

Na verdade, você provavelmente quer linhas contendo apenas uma ou mais seqüências de letras; isto é, linhas contendo letras e espaços. Se é isso que você quer, faça

strings file.abc | grep '^[A-Za-z ]*$'

com um espaço após o z . Se você decidir incluir outros caracteres, coloque-os dentro dos colchetes. (Atenção: alguns personagens serão complicados, como o próprio caractere de aspas, ' e o colchete direito, ] .)

    
por 11.04.2013 / 20:44