NOTA: Esta pergunta é o complemento das perguntas e respostas: Como "grep" para o comprimento da linha * não * em um determinado intervalo?
Eu preciso obter apenas as linhas de um arquivo de texto (uma lista de palavras, separada por uma nova linha) que tenha um intervalo de comprimento mínimo ou igual a 3 caracteres, mas não maior ou igual a 10.
Exemplo:
ENTRADA:
egyezményét
megkíván
ki
alma
kevesen
meghatározó
SAÍDA:
megkíván
alma
kevesen
Pergunta: Como posso fazer isso bash
?
grep -x '.\{3,10\}'
Respostas:
Onde
-x
corresponder padrão à linha inteira.
qualquer símbolo{3,10}
quantificar de 3 a 10 vezes o símbolo anterior (no caso, qualquer um)fonte
usando egrep
corresponde do início ao fim das linhas para 3 ou mais caracteres, mas menor ou igual a 10 caracteres.
fonte
Usando
sed
:Ou:
fonte
Usando
awk
:A
length
instrução retornaria o comprimento de$0
(o registro / linha atual) por padrão, e isso é usado pelo código para testar se o comprimento da linha está dentro do intervalo especificado. Se um teste como este não tiver um bloco de ação correspondente, a ação padrão é imprimir o registro.Teste nos dados fornecidos:
Da mesma forma com Perl:
fonte