[opensuse-es] Eliminar contenido de archivo
Hola, Me gustaría eliminar el 50% (más o menos, tampoco tiene por qué ser exacto) del contenido de un archivo de registro (es un registro secundario que apenas genera datos, por eso no lo he puesto en el logrotate). El archivo sigue una estructura típica, una línea por evento. ¿Se podría hacer por medio de algún comando o con alguna utilidad como el MC (o con ambas) :-)? No tengo entorno gráfico en este servidor. Conecto vía ssh. Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2009-01-05 a las 16:22 +0100, Camaleón escribió:
Hola,
Me gustaría eliminar el 50% (más o menos, tampoco tiene por qué ser exacto) del contenido de un archivo de registro (es un registro secundario que apenas genera datos, por eso no lo he puesto en el logrotate).
El archivo sigue una estructura típica, una línea por evento.
¿Se podría hacer por medio de algún comando o con alguna utilidad como el MC (o con ambas) :-)?
No tengo entorno gráfico en este servidor. Conecto vía ssh.
¿Automático o manual? Si es manual, para una vez, lo abres con un editor, por ejemplo jstar (vía ssh puedes). Marcas la primera mitad (^R ^KR, pg abajo*n.... ^KK), grabar bloque (^KW), borrar bloque (^KY), salir y grabar (^KX). Ojo, no debe haber ni una entrada nueva en ese tiempo, porque la pierdes. ¿Automático? Una combinación en tubería de head y top sirve para extraer 'n' lineas que puedes derivar a un fichero. Hay que derivar el principio a otro fichero "rotado", y luego al revés, sobre el original. Con "sed" creo que también se puede hacer lo de borrar lineas. Es más fácil substituir todo entero: basta con cambiarle el nombre al archivo y crear otro vacío o dejar que el syslog o lo que sea lo cree. - -- Saludos Carlos E.R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) iEYEARECAAYFAkliLDYACgkQtTMYHG2NR9Xb/gCfXC4DsEooQ8ZnhFjWLweRrgsL CekAmwWT6jJVAZstAhVTqP9kpHDKBf2x =EOzE -----END PGP SIGNATURE-----
El 5/01/09, Carlos E. R. escribió:
¿Automático o manual?
Manual.
Si es manual, para una vez, lo abres con un editor, por ejemplo jstar (vía ssh puedes). Marcas la primera mitad (^R ^KR, pg abajo*n.... ^KK), grabar bloque (^KW), borrar bloque (^KY), salir y grabar (^KX). Ojo, no debe haber ni una entrada nueva en ese tiempo, porque la pierdes.
"Does not compute" / "Opción no válida" / "Please, insert coin" :-P
¿Automático? Una combinación en tubería de head y top sirve para extraer 'n' lineas que puedes derivar a un fichero. Hay que derivar el principio a otro fichero "rotado", y luego al revés, sobre el original.
=:-) Demasié pal cuerpo.
Con "sed" creo que también se puede hacer lo de borrar lineas.
Esta opción me gusta más. Se me ha ocurrido algo muy tonto y muy simple. Quizá por eso no funcione O:-) a) Contar las líneas del archivo cat archivo | wc -l 245857 b) Eliminar unas cuantas sed -e "1,120000d" archivo Pero siguen las mismas líneas, no corta :-?
Es más fácil substituir todo entero: basta con cambiarle el nombre al archivo y crear otro vacío o dejar que el syslog o lo que sea lo cree.
Algo me gustaría mantener... Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El Monday 05 January 2009 17:27:45 Camaleón escribió:
a) Contar las líneas del archivo
cat archivo | wc -l 245857
b) Eliminar unas cuantas
sed -e "1,120000d" archivo
Pero siguen las mismas líneas, no corta :-?
¿Y si haces esto? mv archivo archivo.old tail -n 120000 archivo.old > archivo rm archivo.old Si te funciona lo puedes poner en un script que te haga la división Saludos José FSS -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El 5/01/09, JFSS escribió:
El Monday 05 January 2009 17:27:45 Camaleón escribió:
sed -e "1,120000d" archivo
Pero siguen las mismas líneas, no corta :-?
¿Y si haces esto? mv archivo archivo.old tail -n 120000 archivo.old > archivo rm archivo.old
Si te funciona lo puedes poner en un script que te haga la división
Sí, funciona... ya está cortado. Gracias :-) Lo que no sé es por qué "sed" me falla :-? Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El 5/01/09, Camaleón escribió:
Lo que no sé es por qué "sed" me falla :-?
Porque no le estaba indicando una salida para el resultado e iba a la estándar (pantalla) O:-) Es decir, sería algo tal que... sed -e "1,120000" archivo > archivo2; mv archivo2 archivo "Asín" ya parece que corta, envía / almacena y renombra :-) Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2009-01-05 a las 19:29 +0100, Camaleón escribió:
El 5/01/09, Camaleón escribió:
Lo que no sé es por qué "sed" me falla :-?
Porque no le estaba indicando una salida para el resultado e iba a la estándar (pantalla) O:-)
Es decir, sería algo tal que...
sed -e "1,120000" archivo > archivo2; mv archivo2 archivo
"sed" es "s ed", es decir, stream editor. En cambio "ed" sí que edita, pero no estoy seguro de si se puede usar en linea de comandos. Y me acabo de topar con CSI, no me acordaba que es lunes. Y House parece que también empieza pero la 4 no se ve por la TDT hoy. - -- Saludos Carlos E.R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) iEYEARECAAYFAklidvwACgkQtTMYHG2NR9WYrACeIKaybYIznG/CgVO9dCED94C5 kr4An1OCcT8cJUAtP63WxpeZAqcTYc57 =CcBK -----END PGP SIGNATURE-----
El Monday 05 January 2009 18:15:16 Camaleón escribió:
El 5/01/09, JFSS escribió:
El Monday 05 January 2009 17:27:45 Camaleón escribió:
sed -e "1,120000d" archivo
Pero siguen las mismas líneas, no corta :-?
¿Y si haces esto? mv archivo archivo.old tail -n 120000 archivo.old > archivo rm archivo.old
Si te funciona lo puedes poner en un script que te haga la división
Sí, funciona... ya está cortado. Gracias :-)
Lo que no sé es por qué "sed" me falla :-?
Saludos,
-- Camaleón
no se manejar "sed", pero probando con un archivo de 43 lineas: sed -e "1,10" archivo muestra las 33 lineas restantes por pantalla (salida estándar) sin tocar el archivo original (edita el "stream") conclusión, esto funcionaría: mv archivo archivo.old sed -e "1,120000" archivo.old > archivo rm archivo.old Saludos José FSS -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Camaleón vàreu escriure:
El 5/01/09, JFSS escribió:
El Monday 05 January 2009 17:27:45 Camaleón escribió:
sed -e "1,120000d" archivo
Pero siguen las mismas líneas, no corta :-?
¿Y si haces esto? mv archivo archivo.old tail -n 120000 archivo.old > archivo rm archivo.old
Si te funciona lo puedes poner en un script que te haga la división
Sí, funciona... ya está cortado. Gracias :-)
Lo que no sé es por qué "sed" me falla :-?
Creo que la salida del sed la tienes que redireccionar a un archivo. Diria que no hay ninguna opción para guardar la salida a un archivo. Saludos, -- Oscar Curero - Linux user: 306877 -- GPG keyID: 0xE0EA0B24 -- -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El 5/01/09, Oscar Curero escribió:
Camaleón vàreu escriure:
Lo que no sé es por qué "sed" me falla :-?
Creo que la salida del sed la tienes que redireccionar a un archivo. Diria que no hay ninguna opción para guardar la salida a un archivo.
José, Óscar... sí, es lo que decís. Me faltaba redireccionar al archivo :-) Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
participants (4)
-
Camaleón
-
Carlos E. R.
-
JFSS
-
Oscar Curero