Ahora me encuentro con una pequeña tarea a realizar;
Se tiene un fichero /etc/passwd
-------------------------------------------------------
servera:x:588:501::/usr/local/etc4/servera:/bin/bash
serverb:x:589:501::/usr/local/etc4/serverb:/bin/bash
-------------------------------------------------------
Por requerimientos de estructura, necesito que este fichero con cientos de registros como estos, tenga este nuevo formato
-------------------------------------------------------
servera:x:588:501::/usr/local/etc4/SERVERA:/bin/bash
serverb:x:589:501::/usr/local/etc4/SERVERB:/bin/bash
-------------------------------------------------------
Pasar a mayúsculas el campo en negrita, pero tener en cuenta que esa cadena está repetida dos veces por línea, con lo que no vale un simple tr/a-z/A-Z, hay que hacer algo más. ¿Cómo?
Nota: No es necesario modificar todas las entradas del fichero passwd, sólo unas especificadas a través de otro fichero externo.
El fichero externo tendrá:
-------
servera
serverb
serverc
...
-------
¿Cómo solucionarlo?
Solución 1.
--------------------------------
#!/usr/bin/perl
open (PASSWD, "passwd");
while (
$str = $_;
chomp($line);
$str =~ s#(.*:.*/)(.*):(.*)$#$1\U$2\E:$3#;
print "$str";
}
close(PASSWD) || die "No se cerro SERVERS";
No hay comentarios:
Publicar un comentario