2011-05-07 24 views

Respuesta

36
sed '/pattern/!d' file.txt 

Pero estás reinventando grep aquí.

+6

Sí. Pero sed tiene esta ingeniosa bandera en-lugar que grep no tiene. sed -i '/ pattern /! D' nombre de archivo es mucho más fácil que grep 'patrón' nombre de archivo> filename.tmp && mv filename.tmp nombre de archivo – Geeklab

+0

Advertencia: he proporcionado el distintivo --quiet para evitar que se impriman los resultados a la terminal, sin darse cuenta de que -i ya lo logra en sí mismo. Esto significa que todas las líneas fueron eliminadas, incluso aquellas que coinciden con el patrón. – EriF89

2

Esto podría funcionar para usted:

sed -n '/matchingpattern/p' file.txt 

/.../ es una dirección que puede tener acciones adjuntos en este caso p.

2

En lugar de usar sed, que es complicado, use grep.

grep matching_pattern file 

Esto debería darle el resultado deseado.

+0

+1 para la 'herramienta correcta'. pero sed puede modificar un archivo en su lugar. –

1

grep es definitivamente mejor ... porque es mucho más rápido.

p. Ej. usando grep para extraer todos los datos de la secuencia del genoma para el cromosoma 6 en un conjunto de datos con los que trabajo:

$ time grep chr6 seq_file.in > temp.out 

real 0m11.902s 
user 0m9.564s 
sys 0m1.912s 

comparación con sed:

$ time sed '/chr6/!d' seq_file.in > temp.out 

real 0m21.217s 
user 0m18.920s 
sys 0m1.860s 

lo repetí 3X y ~ mismos valores cada vez.

Cuestiones relacionadas