【发布时间】:2015-01-15 17:49:57
【问题描述】:
我有一个包含以下内容的平面文件
INDIA USA SA NZ AUS ARG GER BRA
所以一共有八列。现在我只想将那些以 A 开头的列的索引存储到一个数组中。 为此,我尝试了以下语句
awk '{for(i=1;i<=NF;i++){if($i~/^A/){set -A newArray $i}}}' testUnix.txt
当我使用
回显文件时echo "${newArray[*]}"
它正在打印 5 6 但每当我试图获取该数组的长度时
echo ${#newArray[@]}
它的长度仅显示为 1。不应该是 2 吗? 我也试过了
awk '{y = 0;for(i=1;i<=NF;i++){if($i~/^A/){newArray[y] = $i ; y++}}}' testUnix.txt
但它也产生了相同的结果。 我错过了什么?请解释一下。我打算得到想要的输出 2。
【问题讨论】:
-
awk 和 bash 中的
newArray是两个不同的实体。因此,当您输入echo "${newArray[*]}"时,您将获得 bash 数组的值 -
不得不说——我认为这就是 Perl 或 Python 之类的东西开始发挥作用的地方。