2012-10-10 16 views

Respuesta

11

Otra manera de hacer esto usando awk:

cat file | awk 'length($0) > 120' 
+0

Gracias. Funcionó. ¿Cómo puedo obtener el número de línea? – Sravan

+0

¿Alguna razón para usar 'cat'? – choroba

+1

awk 'length ($ 0)> 120 {print NR ":" $ 0}' – piokuc

7

Puede utilizar grep cuantificador y su repetición:

grep '.\{120\}' script.sh 
+0

+1. Bleh, unos segundos más rápido. –

+0

'grep' es al menos 10 veces más rápido en archivos grandes (10 Gb). – FeedTheWeb

5

usando sed, tiene algunas alternativas:

sed -e '/.\{120\}/!d' 
sed -e '/^.\{,119\}$/d' 
sed -ne '/.\{120\}/p' 

La primera opción coincide con las líneas que no tienen (al menos) 1 20 caracteres (! después de que la expresión ejecute el comando en las líneas que no coinciden con), y los elimina (es decir. no los imprime).

La segunda opción coincide con las líneas que desde el inicio (^) hasta el final ($) tienen un total de caracteres de cero a 119. Estas líneas también se eliminan.

La tercera opción es usar el indicador -n, que le dice a sed que no imprima líneas de manera predeterminada, y solo imprime algo si se lo indicamos. En este caso, unimos líneas que tienen (al menos) 120 caracteres y usamos p para imprimirlas.

+0

La pregunta nombra 'sed' específicamente. Aunque aprecio todas las demás respuestas, esta es la única que funciona cuando sed es todo lo que tienes. – Leo

Cuestiones relacionadas