NOTA: Esta pregunta es el complemento de estas preguntas y respuestas: ¿Cómo "grep" para la longitud de línea * no * en un rango dado?
Necesito obtener solo las líneas de un archivo de texto (una lista de palabras, separadas por una nueva línea) que tiene un rango de longitud mínimo o igual a 3 caracteres, pero no más largo o igual a 10.
Ejemplo:
ENTRADA:
egyezményét
megkíván
ki
alma
kevesen
meghatározó
SALIDA:
megkíván
alma
kevesen
Pregunta: ¿Cómo puedo hacer esto bash
?
grep -x '.\{3,10\}'
Respuestas:
dónde
-x
emparejar el patrón con toda la línea.
cualquier símbolo{3,10}
cuantificar de 3 a 10 veces el símbolo anterior (en el caso cualquiera)fuente
usando egrep
coincide desde el principio hasta el final de las líneas para 3 o más caracteres pero menos o igual a 10 caracteres.
fuente
Utilizando
sed
:O:
fuente
Utilizando
awk
:La
length
instrucción devolvería la longitud de$0
(el registro / línea actual) de forma predeterminada, y el código lo usa para probar si la longitud de la línea está dentro del rango dado. Si una prueba como esta no tiene un bloque de acción correspondiente, la acción predeterminada es imprimir el registro.Prueba en los datos dados:
De manera similar con Perl:
fuente