Como “grep” para comprimento de linha em um determinado intervalo?

21

NOTA: Esta questão é o complemento deste Q & A: Como" grep "para comprimento de linha * não * em um determinado intervalo?

Eu preciso obter apenas as linhas de um arquivo de texto (uma lista de palavras, separadas por 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ó

OUTPUT:

megkíván
alma
kevesen

Pergunta: Como posso fazer isso em bash ?

    
por agc 12.02.2015 / 19:16

3 respostas

30
grep -x '.\{3,10\}'

onde

  • -x padrão de correspondência para linha inteira
  • . de qualquer símbolo
  • {3,10} quantifica de 3 a 10 vezes o símbolo anterior (no caso de qualquer um)
por 12.02.2015 / 20:40
8

usando o egrep

egrep '^.{3,10}$'

corresponde do início ao fim das linhas para 3 ou mais caracteres, mas menor ou igual a 10 caracteres.

    
por 15.02.2015 / 03:16
0

Usando sed :

sed '/^.\{3,10\}$/!d'

Ou:

sed -r '/^.{3,4}$/!d'
    
por 29.09.2018 / 20:04

Tags