print - awk separador de campos
¿Cómo ejecutar un comando para cada ciclo en awk? (2)
Estoy usando awk para dividir una secuencia binaria y puedo obtener cada parte en un ciclo for como este.
for(i=1;i<=NF;i++)
No quiero convertir cada campo en texto o argumentos, sino simplemente pasarlo directamente a un comando.
Estoy tratando de encontrar algo como esto,
for(i=1;i<=NF;i++) system("decode")
pero esto obviamente no funciona. decode no recibe entrada.
¿Cómo obtengo decodificación para recibir cada campo en el ciclo?
¿Es esto lo que estas tratando de hacer?
awk ''{for(i=1; i<=NF; i++) system("decode "$i)}'' input_file.txt
Esto debería pasar cada campo, contenido en la variable awk $i
, al programa externo de decode
. Tenga en cuenta que la variable está fuera de las comillas para "decode "
, o sería interpretada por el intérprete de comandos en lugar de awk.
¿Esto no funciona para ti?
for(i=1;i<=NF;i++) print $i | "decode"
close("decode")
Envía cada campo (o byte en su caso) a un conducto conectado al programa "decodificar".
Después de eso, cierre la tubería de "decodificación" para forzar el enjuague de todos los datos en esa tubería.
Puede leer más sobre la redirección de gawk en https://www.gnu.org/software/gawk/manual/html_node/Redirection.html
Si desea ejecutar "decodificación" para cada byte individual, simplemente cierre el conducto en cada iteración:
for(i=1;i<=NF;i++) {
print $i | "decode"
close("decode")
}