如何为awk中的每个循环执行命令?
How to execute a command for each loop in awk?
我正在使用 awk 拆分二进制流,我可以像这样将每个部分放入一个 for 循环中。
for(i=1;i<=NF;i++)
我不想将每个字段都转换为文本或参数,而是直接将其传递给命令。
我正在寻找类似的东西,
for(i=1;i<=NF;i++) system("decode")
但这显然行不通。解码没有收到输入。
如何解码以接收循环中的每个字段?
这不适合你吗?
for(i=1;i<=NF;i++) print $i | "decode"
close("decode")
它将每个字段(或字节)发送到连接到 "decode" 程序的管道。
之后,关闭 "decode" 管道以强制刷新该管道上的所有数据。
您可以在 https://www.gnu.org/software/gawk/manual/html_node/Redirection.html
上阅读有关 gawk 重定向的更多信息
如果要对每个字节执行"decode",只需在每次迭代中关闭管道即可:
for(i=1;i<=NF;i++) {
print $i | "decode"
close("decode")
}
这是你想要做的吗?
awk '{for(i=1; i<=NF; i++) system("decode "$i)}' input_file.txt
这应该将 awk 变量 $i
中包含的每个字段传递给 decode
外部程序。请注意变量在 "decode "
的引号之外,否则它会被 shell 而不是 awk 解释。
我正在使用 awk 拆分二进制流,我可以像这样将每个部分放入一个 for 循环中。
for(i=1;i<=NF;i++)
我不想将每个字段都转换为文本或参数,而是直接将其传递给命令。
我正在寻找类似的东西,
for(i=1;i<=NF;i++) system("decode")
但这显然行不通。解码没有收到输入。
如何解码以接收循环中的每个字段?
这不适合你吗?
for(i=1;i<=NF;i++) print $i | "decode"
close("decode")
它将每个字段(或字节)发送到连接到 "decode" 程序的管道。
之后,关闭 "decode" 管道以强制刷新该管道上的所有数据。
您可以在 https://www.gnu.org/software/gawk/manual/html_node/Redirection.html
上阅读有关 gawk 重定向的更多信息如果要对每个字节执行"decode",只需在每次迭代中关闭管道即可:
for(i=1;i<=NF;i++) {
print $i | "decode"
close("decode")
}
这是你想要做的吗?
awk '{for(i=1; i<=NF; i++) system("decode "$i)}' input_file.txt
这应该将 awk 变量 $i
中包含的每个字段传递给 decode
外部程序。请注意变量在 "decode "
的引号之外,否则它会被 shell 而不是 awk 解释。