Perl - cortar...

 
Vista:

cortar...

Publicado por victor (1 intervención) el 11/06/2005 04:01:13
#!/usr/bin/perl
print "Seleccione su opcion";
print "1-HDD";
print "2-CD-ROM";
$opcion=<STDIN>
if ( $opcion == 1 ) {
$HD=`df -h /dev/hda1`; #aqui es donde quiero utilizar $HD=`df -h /dev/hda1|awk '{print $5,$6}';
print "$HD";
}
elsif ( $opcion == 2 ) {
$CD=`df -h /dev/cdrom`; #aqui es donde quiero utilizar$CD=`df -h /dev/cdrom`| awk '{print $5,$6}';
print "$CD";
}
else {
print "Error, intene de nuevo";
}

el problema es que si pongo las lineas comentadas el prog me arroja errores, mi duda es que si se pueden usar los pipes como en los scripts. o seria mejor enviar el resultado de print "HD"a un archivo y a ese file hacerle el awk. Lo que quiero es mostar el porcentaje utilizado de las unidades y donde esta montado.
En que parte deberia poner un while en el caso de que lo ingresado sea distinto al 1 y 2?

salu2 y grax
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Joaquin Ferrero
Val: 56
Oro
Ha mantenido su posición en Perl (en relación al último mes)
Gráfica de Perl

RE:cortar...

Publicado por Joaquin Ferrero (31 intervenciones) el 16/08/2005 17:14:19
Supongamos que quieres utilizar el comando df del sistema y el awk para cortar.
Luego entonces el script es

-----------------------------------------------------------------
#!/usr/bin/perl -lw
$HD= qx(df -h /dev/hda1|awk '{print \$5, \$6}');
print $HD;
=========================================
Uso% Montado
73% /
=========================================
Si te fijas, verás que el error estaba en no escapar los '$'.

Otra opción es dejar a perl la labor de cortar y demás:
-----------------------------------------------------------------
print map { join("\t",(split " ",$_)[4,5]),"\n" } qx(df -h /dev/hda1);
=========================================
Explicación: ejecutamos (qx) el comando y eso nos devuelve un conjunto de líneas. Para cada una de ellas (map) la ($_) dividimos (split) y nos quedamos con la 5ª y 6ª parte, que uniremos (join) con un tabulador ("\t") más un retorno de carro, que al final saldrá a pantalla (print).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar