File 如何将系统命令输出提取到awk程序内的变量中?
我从AWK脚本调用的系统命令的输出显示在终端上。我不希望shell显示系统命令的输出,而是希望将此输出读入脚本的变量(系统命令的输出是一个单字字符串“yes”或“no”)。然后需要将该变量与脚本中的字符串进行比较(如果为“是”或“否”),最后需要将命令的输出保存到新文件中。在AWK里我该怎么做File 如何将系统命令输出提取到awk程序内的变量中?,file,awk,io-redirection,File,Awk,Io Redirection,我从AWK脚本调用的系统命令的输出显示在终端上。我不希望shell显示系统命令的输出,而是希望将此输出读入脚本的变量(系统命令的输出是一个单字字符串“yes”或“no”)。然后需要将该变量与脚本中的字符串进行比较(如果为“是”或“否”),最后需要将命令的输出保存到新文件中。在AWK里我该怎么做 "command" | getline var 这将执行命令,并将输出一次一行放入变量var。e、 g $ awk 'BEGIN{while("seq 3" | getline x) print "ou
"command" | getline var
这将执行命令
,并将输出一次一行放入变量var
。e、 g
$ awk 'BEGIN{while("seq 3" | getline x) print "output: " x}'
output: 1
output: 2
output: 3
在两次调用之间,它也将保持不变:
$ seq 3 | awk '{"seq 4 7" | getline x; print x}'
4
5
6
注意:7没有打印,因为没有第四行输入
这篇文章显示了使用
|&
,这没有出现在手册页中,我不确定区别是什么。我认为它可能也捕获了stderr,但在我的测试中它没有这样做。可能重复我在另一篇文章中列出的解决方案。这里列出的getline解决方案似乎不起作用。我不是在shell上运行awk命令,而是使用其他awk命令运行程序脚本。当我尝试使用getline使用该解决方案时,它抛出了一个错误,称为Bad解释器。我想我的awk实现不支持getline。还有其他方法吗?“糟糕的解释器”通常意味着错误的shebang,而不是错误的命令。张贴你得到的准确错误。