Eliminar linea de un archivo similar a comando GREP
Horst von Brand
vonbrand en inf.utfsm.cl
Lun Ago 29 11:08:17 CLT 2005
Jesus Aneiros Sosa <aneiros en finf.ucf.edu.cu> wrote:
> On Sun, 28 Aug 2005, Horst von Brand wrote:
> > Jesus Aneiros Sosa <aneiros en finf.ucf.edu.cu> wrote:
> > > On Sat, 27 Aug 2005, Cristian Gutierrez wrote:
> > > > Hoy en la tarde, Roberto Bonvallet dijo:
> > > > > Astor Giacomo escribio:
> > > > >> On Saturday 27 August 2005 01:43, Julio Retamal Rojas wrote:
> > > > >> > Tengo un archivo que contiene 640.000 lineas y hay lineas que
> > > > >> > tienen un texto en especial y necesito hacer un proceso que busque
> > > > >> > en todo el archivo y elimine esa linea.
> > > > >> Como desagravio al pobre (y aparentemente olvidado) sed(1), me
> > > > >> permito sugerir
> > > > >> sed '/is taked/d' xaa
> >
> > > > > Para no quedarme atras:
> > > > >
> > > > > vim +g,is\ taked,d +wq xaa
> >
> > > > Y ya que el publico lo pide:
> > > > emacs -batch -q xaa -eval '(progn (flush-lines "is taked")(save-buffer)(kill-emacs))'
> > > Con todo respeto: la opcion con vim muy fea
> > Ni tanto... no sabia que vim acepta comandos por argumentos, yo habria
> > hecho algo del corte:
> Eso es porque ud es de la religion de emacs.
No entiendo? Use vi(1) durante mucho tiempo, y aun me manejo razonablemente
bien. Claro que el vi de BSD, no los clones actualmente en boga (que tienen
sus diferencias).
> > (echo g/is taked/d; echo w; echo q) | ed xaa
> >
> > o:
> >
> > (echo g/is taked/d; echo x) | ex xaa
> Con echo -e se ahorra los echo y el subshell.
Eso no es standard en echo(1), IIRC.
> > Si eres de la religion ed(1) o sucesores (ex(1), vi(1), etc) es logico;
>
> No conocia esa religion, conocia el culto a vi.
Me corrijo: El culto a ed.
> > incluso mas, es simplemente el comando obvio para la tarea entre manos,
> > solo que dado de forma ligeramente inusual.
> Obvio dice ud!!??
$ vi xaa
g/is taked/d
x
$
Que tiene de no-obvio para un seguidor de vi? ed(1) no tiene comando x (ni
wq), asi que alli es:
$ ed xaa
g/is taked/d
w
q
$
Dame comandos mas cortos para hacer eso.
> "Ud sabe" que eso no es filosofia UNIX: cada herramienta
> para una funcion bien determinada y cada herramienta pequena y lo mas
> simple posible.
Por lo que tenemos sed(1), que no es mas que un descendiente bastardo de
ed(1)... y tenemos ex(1) con sus multiples personalidades (ex, vi, view;
sin contar rex y rvi). Y para completar el cuadro, more(1), less(1),
most(1). Como si view(1) no fuera suficiente.
Si, hay una "filosofia Unix", pero esta un tanto diluida hoy. Y siempre se
dara el caso que hay traslapos entre funcionalidades.
> > > y la de emacs horrible!
> >
> > Tambien es bastante logico, si eres seguidor de la religion emacs(1).
> Teniendo en cuenta toda la "featuritis" de emacs no me parece muy logico.
No esta usando nada curioso, solo las funciones basicas.
> > > Nada
> > > que ver con UNIX.
> > Porque no?
> Explique arriba.
Me pican los dedos por dar una solucion en teco... pero tendria que
estudiar nuevamente esa cosa, y /tan/ ocioso no estoy ahora.
> > > Seria interesante saber el tiempo que les tomo a cada
> > > uno dar con ellas para comparar con las mas "intuitivas" de grep(1) o
> > > sed(1).
> >
> > Diria que mas o menos el mismo tiempo.
> Tengo la impresion que no es lo que dijo uno de los autores. Me dio la
> impresion que estaban pensando en terminos de una especie de YAPH, Perl
> ofuscado o algo asi. Al menos mi respuesta con el comando w de sed(1) iba
> por ese camino. Creo que ellos estaban tratando de "exprimir" al maximo a
> emacs o vim pero ya tenian la solucion con grep, sed o awk en mente.
POsiblemente. Pero una vez que se te ocurre hacerlo con c/u de ellos, el
tiempo para encontrar la solucion es similar. Insisto, no son cosas
marcianas, es simplemente el "comando normal, interactivo" dado de forma un
tanto inusual (uso batch, que para c/u de ellos es tambien "uso normal").
--
Dr. Horst H. von Brand User #22616 counter.li.org
Departamento de Informatica Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria +56 32 654239
Casilla 110-V, Valparaiso, Chile Fax: +56 32 797513
Más información sobre la lista de distribución Linux