2012-05-20 9 views
7

Estoy trabajando en un shell bash e intento imprimir solo la línea de la primera aparición de la cadena. Por ejemplo, la cadena 'auir', si tengo la miarchivo.txt archivo y que contiene:UNIX: ¿Usando egrep o sed para encontrar la línea con la primera aparición de una cadena?

123 
asdf 
4wirajw 
forauir somethingelse 
starcraft 
mylifeforauir 
auir 
something else 
tf.rzauir 

Quiero salida "forauir somethingelse"

Hasta ahora, yo uso el comando

sed -n '/auir/p' myfile.txt 

que me da todas las apariciones de esta cadena. ¿Cómo puedo obtener solo la primera línea en la que aparece 'auir'? Sería fantástico si fuera solo un comando o una serie de comandos.

Cualquier idea es muy apreciada.

+2

starcraft como ejemplo. increíble. – cmo

+0

Seguramente usted buscará "Aiur"? – Pankrates

Respuesta

5

Este comando sed

sed -n '/auir/p' myfile.txt | head -1

resuelve su problema.

+10

También podría usar un script 'sed' que se cierra después de imprimir la primera aparición; como 'sed '/ auir /! d; q'' – tripleee

+0

¡Muchas gracias por la respuesta rápida! ¡Trabajos! :) –

+0

@tripleee Oh, eso es imaginativo, soy nuevo en materia de shell, voy a probar eso. ¡Gracias! –

9

Utilice esta:

grep -m1 auir myfile.txt 
+0

Yeup, grep está bien, beerbjay te gana dos minutos, tienes que darle los puntos. Sin embargo, siempre es bueno saber varias maneras de hacer lo mismo. ¡gracias por la respuesta! –

+1

La redirección no es necesaria. –

5

Esto podría funcionar para usted:

sed '/auir/!d;q' file 

o

sed -n '/auir/{p;q}' file 
1

O puede ser tan simple como esto

grep auir myFile.txt|head -1 
Cuestiones relacionadas