grep para linhas com todas as palavras maiores que 10 caracteres de comprimento

2

Eu preciso de um comando grep que encontre todas as linhas que contenham apenas palavras com comprimentos maiores que 10.

este é o grep que escrevi para encontrar palavras com mais de 10 caracteres.

grep -E '(\w{11,})' input

Como eu manipularia esse comando para incluir todas as palavras na linha?

    
por mike 03.11.2017 / 05:58

1 resposta

5

Sua condição pode ser mais facilmente expressa no contrapositivo: em vez de incluir linhas em que todas as palavras tenham comprimento > 10, exclua as linhas que têm uma palavra com comprimento < = 10. Como o grep suporta negação e correspondência de palavras, isso poderia ser escrito como, digamos:

grep -vwE '\w{1,10}'
  • -v nega a correspondência
  • -w significa que o regex deve corresponder a uma palavra inteira

Como Sundeep observou, devemos usar {1,10} para evitar corresponder a string vazia (e, portanto, toda linha).

    
por 03.11.2017 / 06:32