Como filtrar los registros de una entidad
Lo que pasa que tengo un archivo de entrada.txt el cual contiene la siguiente linea de 160 caracteres
C 00002490056220090615299564289400091016720000000001200FEB0003001606013192009120110403501003615422459740000000000000000000000000000000000000000000000000
numero 1 tengo que validad el tamaño de la linea tiene que ser 160 caracteres
numero 2 todos los que son EB0003 pasalor a otro archivo
eso es fácil con un simple código como este
cat C98009120122.TOT | awk '{if (substr($0,59,6) == "EB0003") print $0}' > C98009120122_0003.TOT
lo que deses e slo siguiente : nombre del prog "extrac_ent.awk"
BEGIN {
ent=substr($0,59,6) aca capturo el EB0003
}
{
Acá lo que quiero es poder escoger si es 0002, 0003, 0004 etc y que los imprima en otro archivo pero ese print no me funciona
if (ent=="EB0002"){
printf "%s\n",$0
}
}
END {
}
este es el prog que llama al awk de arriba
#*******************************************************
#*Programa que extrae la entidad del C980AAMMDD22.TOT *
#*******************************************************
#primero ponemos una variable con la ruta donde estara el archivo de entrada
arch=/export/home/sixmain/file_out/$1
#este if verifica si has puesto el parametro de entrada
if [ "$arch" = "" ]; then
echo "Falta archivo de entrada"
exit 1
else
#este if verifica si existe el archivo de entrada
if ! [ -f "$arch" ]; then
echo "Archivo no existe: $arch"
exit 1
fi
fi
cat $arch | awk -f extrac_ent.awk > C980entidad.TOT
C 00002490056220090615299564289400091016720000000001200FEB0003001606013192009120110403501003615422459740000000000000000000000000000000000000000000000000
numero 1 tengo que validad el tamaño de la linea tiene que ser 160 caracteres
numero 2 todos los que son EB0003 pasalor a otro archivo
eso es fácil con un simple código como este
cat C98009120122.TOT | awk '{if (substr($0,59,6) == "EB0003") print $0}' > C98009120122_0003.TOT
lo que deses e slo siguiente : nombre del prog "extrac_ent.awk"
BEGIN {
ent=substr($0,59,6) aca capturo el EB0003
}
{
Acá lo que quiero es poder escoger si es 0002, 0003, 0004 etc y que los imprima en otro archivo pero ese print no me funciona
if (ent=="EB0002"){
printf "%s\n",$0
}
}
END {
}
este es el prog que llama al awk de arriba
#*******************************************************
#*Programa que extrae la entidad del C980AAMMDD22.TOT *
#*******************************************************
#primero ponemos una variable con la ruta donde estara el archivo de entrada
arch=/export/home/sixmain/file_out/$1
#este if verifica si has puesto el parametro de entrada
if [ "$arch" = "" ]; then
echo "Falta archivo de entrada"
exit 1
else
#este if verifica si existe el archivo de entrada
if ! [ -f "$arch" ]; then
echo "Archivo no existe: $arch"
exit 1
fi
fi
cat $arch | awk -f extrac_ent.awk > C980entidad.TOT
1 respuesta
Respuesta de claudiopazos
1