Re: [BASH] Detectar una línea en blanco y cortar el fichero [SOLUCIONADO]
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.
> >
> >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
---------------------------------------------------
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
Gracias por tu interés.
--
y hasta aquí puedo leer...
Reply to: