----- Original Message ----- From: "Iñaki" >El Martes, 14 de Febrero de 2006 19:06, Raul escribió: >> Iñaki wrote: >> >Hola, llevo rato con un script que necesito para mañana y no sé por dónde >> >cogerlo. Me falta un trocito que debe hacer lo siguiente: >> > >> >Tengo un fichero que siempre es más o menos así: >> > >> >------------------------------------------------------------------------ >> >A 1212 >> >B 2323232323 >> >C 121212121212121212 >> >D 21212121212 >> > >> >Received jasjijasd >>>asd >>>asd >> >as >> >da >> > >> >sd >> >asd >> >a >> > >> >sda >> >sd >> >-------------------------------------------------------------------------- >> >--- >> > >> >El número de líneas antes de la línea en blanco es variable, así que no me >> >sirve "sed" para mi propósito.
Como alguien ya ha dicho ¿seguro? (ver más abajo por favor) >> > >> >Necesito obtener ese fichero pero quitándole todas las líneas antes de la >> >primera línea en blanco (puede que haya más pero sólo debe actuar hasta la >> >primera). La cosa es que el archivo quede así: >> > >> >-------------------------------------------------------------------------- >> >--- Received jasjijasd >> >asd >> >asd >> >as >> >da >> > >> >sd >> >asd >> >a >> > >> >sda >> >sd >> >-------------------------------------------------------------------------- >> >--- >> > >> > >> >Se me ocurre que un script lea línea a línea el fichero y suprima cada >> > línea hasta llegar a la primera en blanco (inclusive). Pero el problema >> > es que no sé llevarlo a la práctica. ¿Alguien puede orientarme un poco? >> > aunque sólo sea una indicación de por dónde tirar se lo agradecería >> > mucho. >> > >> > >> >Un saludo a todos. >> >> Saludos, >> >> >> No se, es esto lo que necesitas? >> >> > cat spaces | grep ^[a-Z,0-9] >> >> A 1212 >> B 2323232323 >> C 121212121212121212 >> D 21212121212 >> Received jasjijasd >> asd >> asd >> as >> da >> sd >> asd >> a >> sda >> sd > >Gracias, pero no es lo que necesito, ya que yo quiero que también desaparezcan >las líneas anteriroes al primer espacio en blanco. > >No obstante creo que ya lo tengo: > >** cuenta_lineas_comienzo.bash ** >--------------------------------------------------- >#!/bin/bash > ># Numero de líneas que habrá que cortar del inicio: >num_lineas=0 > >INPUT="valor inicial" > >while [ "$INPUT" != "" ]; do > read INPUT > let num_lineas++ >done > >echo $num_lineas >--------------------------------------------------- > - Mejorando el primer script (man grep) Mismo resultado en una linea: grep -vn ^[a-Z,0-9] fichero.txt | head -n1 | sed -e 's/://' O si lo prefieres: cat fichero.txt | grep -vn ^[a-Z,0-9] | head -n1 | sed -e 's/://' (sigue un pco más abajo) >Creo otro script que haga: > #> fila_final=$(cat fichero.txt | ./cuenta_lineas_comienzo.bash) >Así $fila_final tendrá el último número de línea a eliminar, que ya será un >valor fijo y entonces puedo hacer: > cat fichero.txt | sed "1,$fila_final d" > fichero2.txt - Mejorando el conjunto de dos scripts con uno solo #!/bin/bash numero=`grep -vn ^[a-Z,0-9] fichero.txt | head -n1` numero=$(echo $numero | sed s/":"/""/g) cat fichero.txt | sed "1,${numero} d" - Mejorando el script único con una sola instrucción (google -> sed tutorial delete) sed '1,/^$/ d' < fichero.txt Habiendo tantos comandos muy útiles, es mejor no reinventar la rueda. Para cosas más complejas de tratamiento de ficheros, sigo recomendando Perl. > >Gracias por tu interés. > >-- >y hasta aquí puedo leer... Saludos Guimi http://www.guimi.net -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]