如何在awk中为每个循环执行命令?

aku*_*001 7 awk binary-data

我正在使用awk来拆分二进制流,我可以将每个部分都放到这样的for循环中.

for(i=1;i<=NF;i++)

我不想将每个字段转换为文本或参数,而只是将其直接传递给命令.

我想找到这样的东西,

for(i=1;i<=NF;i++) system("decode")

但这显然不起作用.decode没有输入.

如何进行解码以接收循环中的每个字段?

val*_*rog 4

这对你不起作用吗?

for(i=1;i<=NF;i++) print $i | "decode"
close("decode")
Run Code Online (Sandbox Code Playgroud)

它将每个字段(或您的情况下的字节)发送到连接到“解码”程序的管道。

之后,关闭“解码”管道以强制刷新该管道上的所有数据。

您可以在https://www.gnu.org/software/gawk/manual/html_node/Redirection.html上阅读有关 gawk 重定向的更多信息

如果要对每个字节执行“解码”,只需在每次迭代中关闭管道即可:

for(i=1;i<=NF;i++) {
    print $i | "decode"
    close("decode")
}
Run Code Online (Sandbox Code Playgroud)