Lo puedes hacer tanto con awk como con sed, con awk puedes masajear el
contenido del archivo y con sed hacer acciones puntuales (aunque tambien se
puede llegar a la funcionalidad del awk , pero la linea del sed se
complicaria), si la idea solo es borrar la linea donde exista el codigo de
user en n archivos de texto dispersos, usa sed, en un pequeño shell como
este :
#!/bin/sh
WRKDIR=/ruta/inicio/de/tus/archivos/a/procesar
TMPDIR=/ruta/temporal/de/archivos
#la extension de tus archivos en donde vas a buscar el codigo
FILEXT=*.txt
#el codigo a buscar
USRCOD="PEPITO01"
#generas archivo temporal con todos los archivos de texto que quieres
procesar
find $WRKDIR -name $FILEXT > $TMPDIR/ARCHIVOSAPROCESAR.LIS
#archivo x archivo
while read linea
do
#el sed lo que hace es procesar el archivo pero no lo modifica (igual que
awk), entonces necesitas enviar el nuevo contenido a un archivo nuevo
(valga la redundancia)
#la siguiente linea te genera un nombre de archivo igual al procesado
adicionandole al final ".CNV"
NEWFIL=`basename $linea`".CNV"
#buscas el codigo y lo procesado lo redireccionas al nuevo archivo
cat $linea | sed '/'$USRCOD'/d' > $TMPDIR/$NEWFIL
done < $TMPDIR/ARCHIVOSAPROCESAR.LIS
#Fin
A considerar :
- Si tienes nombres de archivos a procesar iguales en distintos directorios
de tu WRKDIR , tendrias que cambiar la parte del redireccionamiento.
- Si en los archivos figura el codigo en distintas columnas (llamese campos)
y solo quieras borrar la linea solo si el codigo esta en la columna x (en
una posicion especifica de la linea)), tienes que usar awk.
- IMPORTANTE : primero prueba enviando lo procesado a otro directorio , no
vayas a reemplazar el archivo original , ya que como bien dicen los
disclaimers "No me responsabilizo por el uso indebido del programa... blah
blah blah"
Esta es una forma , con awk tambien tendrias que hacer un pequeño shell ,
pero me da pereza :) y con este puedes probar
Slds
On 8/4/07, Wilson Acha <[EMAIL PROTECTED]> wrote:
>
> Hola, Listeros, en mi oficina tengo el siguiente escenario, en un
> directorio tengo varios archivos de texto que se va generando
> automaticamente con registros de usuarios (uno por linea), un archivo
> por cada dia, pero actualmente precisamos eliminar las filas de todos
> los archivos que cumplan cierto patron o que contengan un dato
> especifico, por decir, borrar todas las filas de todos los archivos
> del directorio que contengan el codigo de cierto usuario, tengo
> entendido que esto se puede hacer con AWK, lastimosamente nunca lo he
> manejado, es por eso que recrro a uds para que me puedan orientar en
> el mismo.
>
>
> Espero sus comentarios
> _______________________________________________
> Lista de correo Linux-plug
> Temática: Discusión general sobre Linux
> Peruvian Linux User Group ( http://www.linux.org.pe)
>
> Participa suscribiéndote y escribiendo a: [email protected]
> Para darte de alta, de baja o hacer ajustes a tu suscripción visita:
> http://www.linux.org.pe/cgi-bin/mailman/listinfo/linux-plug
>
> IMPORTANTE: Reglas y recomendaciones
> http://www.linux.org.pe/listas/reglas.php
> http://www.linux.org.pe/listas/comportamiento.php
> http://www.linux.org.pe/listas/recomendaciones.php
>
_______________________________________________
Lista de correo Linux-plug
Temática: Discusión general sobre Linux
Peruvian Linux User Group (http://www.linux.org.pe)
Participa suscribiéndote y escribiendo a: [email protected]
Para darte de alta, de baja o hacer ajustes a tu suscripción visita:
http://www.linux.org.pe/cgi-bin/mailman/listinfo/linux-plug
IMPORTANTE: Reglas y recomendaciones
http://www.linux.org.pe/listas/reglas.php
http://www.linux.org.pe/listas/comportamiento.php
http://www.linux.org.pe/listas/recomendaciones.php