Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
awk中的Linux-readarray_Linux_Awk - Fatal编程技术网

awk中的Linux-readarray

awk中的Linux-readarray,linux,awk,Linux,Awk,我是个新手。我正在尝试加载带有readarray的单列文件(column1-numbers),并打印数组长度。但这是一个错误 GNUBash,版本4.1.2(1)-发行版(x86_64-redhat-linux-GNU) array.sh sqlplus -s user/pass@SID.WORLD <<-END > /dev/null set heading off; spool /tmp/numbers.txt select number from table; COMM

我是个新手。我正在尝试加载带有
readarray
的单列文件(column1-numbers),并打印数组长度。但这是一个错误

GNUBash,版本4.1.2(1)-发行版(x86_64-redhat-linux-GNU)

array.sh

sqlplus -s user/pass@SID.WORLD <<-END > /dev/null

set heading off;
spool /tmp/numbers.txt
select number from table;
COMMIT;
spool off;
END


awk '{
        readarray tn < "/tmp/numbers.txt"
        print $1     #// just checking
        print  ${#tn[@]}   #// getting array length.
}' /tmp/numbers2.txt
更新:

awk: cmd. line:3:       print  ${#tn[@]}
awk: cmd. line:3:               ^ syntax error
I want to use that readarray to populate array and do some operation on array.
如果我将
awk
更改为

awk  '{
        readarray tn < "/tmp/numbers.txt"
        print tn;    # // will print blank lines that is equals to actual lines of file
}' /tmp/numbers1.txt
awk'{
readarray tn<“/tmp/numbers.txt”
print tn;#//将打印等于文件实际行数的空行
}'/tmp/numbers1.txt

awk不是外壳
readarray
是一个shell命令
${tn[@]}
是一个shell变量求值。这两种方法在awk中均无效


我完全不清楚您到底想做什么,因此我无法真正开始建议正确的方法。

awk不是shell
readarray
是一个shell命令
${tn[@]}
是一个shell变量求值。这两种方法在awk中均无效


我完全不清楚您到底想做什么,因此我无法真正开始建议正确的方法。

awk不是shell
readarray
是一个shell命令
${tn[@]}
是一个shell变量求值。这两种方法在awk中均无效


我完全不清楚您到底想做什么,因此我无法真正开始建议正确的方法。

awk不是shell
readarray
是一个shell命令
${tn[@]}
是一个shell变量求值。这两种方法在awk中均无效

我完全不清楚您到底想做什么,因此我无法真正开始建议正确的方法。

一些替代方案:

只需使用bash:
readarray tn<“/tmp/numbers.txt”;echo${#tn[@]}

awk:
awk'END{print NR}'/tmp/numbers.txt

wc:
wc-l

sql:

一些备选方案:

只需使用bash:
readarray tn<“/tmp/numbers.txt”;echo${#tn[@]}

awk:
awk'END{print NR}'/tmp/numbers.txt

wc:
wc-l

sql:

一些备选方案:

只需使用bash:
readarray tn<“/tmp/numbers.txt”;echo${#tn[@]}

awk:
awk'END{print NR}'/tmp/numbers.txt

wc:
wc-l

sql:

一些备选方案:

只需使用bash:
readarray tn<“/tmp/numbers.txt”;echo${#tn[@]}

awk:
awk'END{print NR}'/tmp/numbers.txt

wc:
wc-l

sql:


你到底想在这里干什么?您是否要打印
numbers2.txt
的第一列,然后成对打印
numbers.txt
的长度?awk不是shell,它是一个完全独立的工具,有自己的语言。您不应该期望能够直接从awk调用shell命令,就像您不能从C调用它们一样。如果您告诉我们您正在使用一些示例输入和预期输出尝试做什么(而不是如何尝试做任何事情),我们可以提供帮助。您想在awk中操作数组吗?在壳里?sql涉及到什么?回答:是的。在贝壳里。用数据库中的数字填充文件。你到底想在这里做什么?您是否要打印
numbers2.txt
的第一列,然后成对打印
numbers.txt
的长度?awk不是shell,它是一个完全独立的工具,有自己的语言。您不应该期望能够直接从awk调用shell命令,就像您不能从C调用它们一样。如果您告诉我们您正在使用一些示例输入和预期输出尝试做什么(而不是如何尝试做任何事情),我们可以提供帮助。您想在awk中操作数组吗?在壳里?sql涉及到什么?回答:是的。在贝壳里。用数据库中的数字填充文件。你到底想在这里做什么?您是否要打印
numbers2.txt
的第一列,然后成对打印
numbers.txt
的长度?awk不是shell,它是一个完全独立的工具,有自己的语言。您不应该期望能够直接从awk调用shell命令,就像您不能从C调用它们一样。如果您告诉我们您正在使用一些示例输入和预期输出尝试做什么(而不是如何尝试做任何事情),我们可以提供帮助。您想在awk中操作数组吗?在壳里?sql涉及到什么?回答:是的。在贝壳里。用数据库中的数字填充文件。你到底想在这里做什么?您是否要打印
numbers2.txt
的第一列,然后成对打印
numbers.txt
的长度?awk不是shell,它是一个完全独立的工具,有自己的语言。您不应该期望能够直接从awk调用shell命令,就像您不能从C调用它们一样。如果您告诉我们您正在使用一些示例输入和预期输出尝试做什么(而不是如何尝试做任何事情),我们可以提供帮助。您想在awk中操作数组吗?在壳里?sql涉及到什么?回答:是的。在贝壳里。用数据库中的数字填充文件。
set heading off;
spool /tmp/numbers.txt
select number from table;
spool off;
select count(number) from table;