[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: