如何将系统命令输出解压缩到awk程序中的变量中?

时间:2012-08-14 12:08:39

标签: file awk io-redirection

我从AWK脚本调用的系统命令的输出正在终端上显示。我不希望shell显示系统命令的输出,而是希望将此输出读入脚本的变量(系统命令的输出是单字符串“yes”或“no”) 。然后需要将此变量与脚本中的字符串进行比较(如果其为“是”或“否”),并且命令的输出最终需要保存到新文件中。我如何在AWK中执行此操作?

1 个答案:

答案 0 :(得分:1)

"command" | getline var

这将执行command并将输出(一次一行)放入变量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不会打印,因为没有第四行输入。

帖子here显示使用|&,但不会出现在手册页中,我不确定区别是什么。我认为它也可能捕获stderr,但它在我的测试中没有这样做。