gpt4 book ai didi

awk - 将系统命令的输出分配给变量

转载 作者:行者123 更新时间:2023-12-02 15:15:43 26 4
gpt4 key购买 nike

我想在 awk 脚本中运行 system 命令并将其输出存储在变量中。我一直在尝试这样做,但命令的输出总是发送到 shell,而我无法捕获它。关于如何做到这一点有什么想法吗?

示例:

$ date | awk --field-separator=! {$1 = system("strip $1"); /*more processing*/}

应调用 strip 系统命令,而不是将输出发送到 shell,而应将输出分配回 $1 以进行更多处理。现在,它将输出发送到 shell 并将命令的 retcode 分配给 $1

最佳答案

注意:协进程是 GNU awk 特定的。无论如何,另一种选择是使用 getline

cmd = "strip "$1
while ( ( cmd | getline result ) > 0 ) {
print result
}
close(cmd)

调用 close(cmd) 将阻止 awk 在多次调用后抛出此错误:

fatal: cannot open pipe `…' (Too many open files)

关于awk - 将系统命令的输出分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1960895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com