INPUT_FILE.txt en c:\Pro\usr\folder1
ABCDEFGH123456 ABCDEFGH123456 ABCDEFGH123456 BBCDEFGH123456 BBCDEFGH123456 usó el siguiente comando AWK en el script .SH que se ejecuta desde c:\Pro\usr\folder2 para dividir el archivo en varios archivos txt con una extensión de _kg según los primeros 8 caracteres.
awk '{ F=substr($0,1,8) "_kg" ".txt"; print $0 >> F; close(F) }' ' "c:\Pro\usr\folder1\input_file.txt" esto funciona bien, pero los archivos se escriben en la ubicación principal a la que apunta bash. ¿Cómo puedo enrutar los archivos creados a otra ubicación como c:\Pro\usr\folder3 .
Gracias
Pase la carpeta de destino como una variable a awk:
awk -v dest='c:\\Pro\\usr\\folder3\\' '{F=dest substr($0,1,8) "_kg" ".txt"; print $0 >> F; close(F) }' "c:\Pro\usr\folder1\input_file.txt"Creo que se requieren las barras invertidas duplicadas.
Seguir el código awk puede ayudarlo en el mismo, escrito y probado con muestras mostradas en GNU awk .
awk -v outPath='c:\\Pro\\usr\\folder3' -v FPAT='^.{8}' '{outFile=($1"_kg.txt");outFile=outPath"\\"outFile;print > (outFile);close(outFile)}' Input_file Explicación: Creando una variable awk llamada outPath que tiene la ruta mencionada por OP en las muestras. Luego configurando FPAT (configuración del separador de campo como una expresión regular), donde estoy creando un campo de 8 caracteres a partir del primer carácter. En el programa principal de awk , se crea la variable outFile que tiene nombres de archivos de salida (primer campo seguido de _kg.txt), luego se imprime la línea completa en el archivo de salida y se cierra el archivo de salida en el backend para evitar el error "demasiados archivos abiertos".