在awk脚本中使用访问Hbase

在awk脚本中使用访问Hbase,awk,metadata,hbase,Awk,Metadata,Hbase,我可以通过hbase和awk命令访问hbase echo "scan 'abc'" | hbase shell | awk -F"=" '{print$4}' 但是我无法在没有系统调用的情况下使用awk编程编写上述命令,如何在awk脚本中获取'{print$4}',以便在脚本中处理数据 编辑 我现在正在做的是在my.awk中调用一个系统调用并将其保存在另一个文件中,但我想在my.awk中使用$4,而不是将其保存在另一个文件中。我所做的是: #!/bin/awk -f BEGIN {

我可以通过hbase和awk命令访问hbase

echo "scan 'abc'" | hbase shell | awk -F"=" '{print$4}'
但是我无法在没有系统调用的情况下使用awk编程编写上述命令,如何在awk脚本中获取
'{print$4}'
,以便在脚本中处理数据

编辑

我现在正在做的是在my.awk中调用一个系统调用并将其保存在另一个文件中,但我想在my.awk中使用$4,而不是将其保存在另一个文件中。我所做的是:

#!/bin/awk -f

BEGIN {
        ftable="echo" " \"" "scan" " " "'abc'" "\" ""| hbase shell | awk -F" "" "= '{print$4}'> abc.txt";
        print ftable;
        system(ftable);
    }

我想现在更清楚了,基本上我不想调用系统调用,因为它总是返回0;即使是shell也可以工作,但我想要的是在脚本中获得这个打印输出。

awk不是shell。unixshell是一个环境,在这个环境中可以使用一种语言调用工具来对这些调用进行排序。awk是一种用于解析文本文件的UNIX工具。我猜hbase是另一个UNIX工具,具有其他用途。在awk中,您可以通过两种不同的方式调用shell,但不清楚为什么您希望让shall调用awk来调用shell来调用hbase,而不是让shell同时调用awk和hbase(如果需要这两种工具来解决您的问题)。如果您用解释和一些示例输入/输出更新您的问题,我们可以提供帮助。@EdMorton感谢您的评论。通常没有理由从awk程序内部调用shell命令。在编辑过程中,您正在从内部调用
awk
,这甚至更为糟糕-请原谅双关语-笨拙。现在还不清楚你想在这里实现什么。另一方面,
system()
函数的作用是只调用shell命令,而不捕获其输出;只返回其退出代码;相比之下
|getline
将允许您读取命令的输出-再说一遍:这是一种仅在异常情况下使用的高级技术。我仍然不清楚您为什么要从
awk
程序中调用shell命令-您不能事先调用shell命令并将感兴趣的输出传递给
awk
通过管道(stdin)和/或通过awk变量作为输入而不是文件?例如:
awk-v someAwkVar=“$someShellVar”…..”
。如果您仍然想知道如何从
awk
程序内部调用shell命令并捕获其输出,请搜索
manawk
以查找
getline
,另请注意,您可以有选择地重定向到
awk
程序内部的输出文件,而不涉及shell;e、 g:假设您对awk程序中的
$4
感兴趣,同时将其保存到作为变量传递的文件中:
awk-v out=abc.txt'{print$4>out}