| Autor |
Mensaje |
minelli31

Forista Nuevo
Registrado: Lun Ene 24, 2011 3:37 pm Mensajes: 2
|
 Publicado: Lun Ene 24, 2011 3:46 pm |
|
|
Como puedo construir un guion para que borre las líneas en blanco de un archivo de texto. El guion deberá comprobar: a)Que se especifica un archivo. En caso contrario, se recuerda la sintaxis. b)Si es especifica un nombre de archivo, comprobar que éste existe
| Última edición por mcun el Lun Ene 24, 2011 6:18 pm, editado 1 vez en total |
| Mensaje movido por pertenecer mejor a esta temática, por favor revisa el reglamento |
|
|
|
|
 |
peyopeyo

Forista Nuevo
Registrado: Lun Ene 24, 2011 3:45 pm Mensajes: 2
|
 Publicado: Lun Ene 24, 2011 3:55 pm |
|
|
vere que puedo hacer. en unos dia te respondo.
|
|
|
|
 |
o4kley

Forista Medio
Registrado: Vie Dic 31, 2010 6:40 pm Mensajes: 297 Ubicación: Peru
|
 Publicado: Lun Ene 24, 2011 5:58 pm |
|
|
usa tail , aprende como usarlo y as tu script
_________________ "Bañarse en pareja (ahorra agua y ayuda a producir niños ecológicos) =)" http://o4-gml.blogspot.com/
|
|
|
|
 |
niky45

Forista Ancestral
Registrado: Mié Abr 11, 2007 11:00 pm Mensajes: 8550 Ubicación: tras la pantalla (...)
|
 Publicado: Mar Ene 25, 2011 4:39 am |
|
o4kley escribió: usa tail , aprende como usarlo y as tu script tail??? yo lo haria con grep o con sed. mira los manuales, porque se puede con los dos. solo hay que saber: 1. como "ve" sed el salto de linea doble 2. como hacer que grep detecte la linea vacia.
_________________ #446716
--Not me, guys. I read the Bash man page each day like a Jehovah's Witness reads the Bible. No wait, the Bash man page IS the bible. Excuse me... (from comp.os.linux.misc) [ DNFD ] - [ F4A ] - [ dotfiles ]
|
|
|
|
 |
t4rr1t0

Ganador CSEL 2011
Registrado: Dom Dic 12, 2010 10:07 am Mensajes: 313
|
 Publicado: Mar Ene 25, 2011 5:49 am |
|
Yo lo haria con PERL Código: #!/usr/bin/perl -w use strict;
my $archivo=$ARGV[0];
if ($archivo && -f $archivo){ open ARCHIVO, "$ARGV[0]"; my @contenido=<ARCHIVO>; close ARCHIVO;
foreach my $linea (@contenido){ $linea=~s/^\n//ig; print $linea; } } else { print "poner aqui mensaje que recuerda sintaxis"; }
Ojo que como esta hecho asi no más necesitas un operador de redirección para enviar el contenido modificado a un archivo, sino solo sale por pantalla, pero tampoco era la idea hacerte toda la tarea.... Salu2. Por cierto, yo tampoco entiendo como hacerlo con Tail, pero yo de Bash se bien poco...
|
|
|
|
 |
codestation

Forista Nuevo
Registrado: Sab Dic 19, 2009 7:33 pm Mensajes: 36
|
 Publicado: Mié Ene 26, 2011 9:40 pm |
|
|
Usando sed, un AND, un OR y una comprobación de archivo se puede hacer el script en una sola línea de 64 caracteres. Si tienes dudas con mucho gusto se aclararán, pero no pidas que te pongamos el script y ya.
_________________ Just feel the code...
|
|
|
|
 |
o4kley

Forista Medio
Registrado: Vie Dic 31, 2010 6:40 pm Mensajes: 297 Ubicación: Peru
|
 Publicado: Jue Ene 27, 2011 9:47 am |
|
|
Perdon confunfi el comando , no volvera a pasar , para eso se usa sed
_________________ "Bañarse en pareja (ahorra agua y ayuda a producir niños ecológicos) =)" http://o4-gml.blogspot.com/
|
|
|
|
 |
_osorio_

Miembro ETEL
Registrado: Mié Dic 08, 2004 12:00 am Mensajes: 526 Ubicación: BS. AS Argentina
|
 Publicado: Mié Feb 09, 2011 12:54 pm |
|
|
Por "Guion" hablas de script??
La validación y el reemplazo puedes hacerlos con un simple if/elif/else/fi. No soy programador, así que no me vengan con imaginación ni nada de eso, pero oye, leyendo paginas man, buscando algún manual de bash y preguntando a Google lo podías sacar en menos tiempo de lo que se tarda en responderte en un foro.
Una ayuda: con -eq puedes verificar si se indico algun parametro: if [[ $# -eq 0 ]] Con -gt puedes verificar si agrego mas de un parámetro, lo cual esta mal ya que tu script seguro no contemplara editar mas de un archivo: [[ $# -gt 1 ]] Con [[ -r $1 ]] verificara si existe el archivo y es legible
y para reemplazar los espacios, basta con sed 's/ //g' $1 > $1-sinespacios
No recuerdo como, pero en vez de sed, podes usar vi para editar al vuelo
EDIT: Perdon, la flashie pense que querias borrar espacio y no lineas en blanco. Para borrar lineas en blanco con sed es: sed '/^$/d'
_________________ Saludos. Matías S. Sardisco | http://msardisco.com.ar
$ emerge --info | head -n3 Portage 2.1.9.34 (default/linux/x86/10.0, gcc-4.5.2, glibc-2.12.2-r0, 2.6.37-ck i686) ================================================================= System uname: Linux-2.6.37-ck-i686-Intel-R-_Atom-TM-_CPU_N270_@_1.60GHz-with-gentoo-2.0.1
|
|
|
|
 |
|
|
|