用于创建数组的Shell脚本

时间:2014-03-15 07:28:14

标签: arrays shell grep

我希望unix文件中的每个数字运行一个grep,其中包含第二个文件中的确切内容,并将我找到的结果放在一个数组中。

第一个文件(单词)采用以下形式:

a
b
c
d

和第二个(频率)包含

f 3
b 8
d 4
v 2
a 5
c 2

所以我想创建包含以下内容的数组:

[a 5]
[b 8]
[c 2]
[d 4]

非常感谢!

2 个答案:

答案 0 :(得分:0)

您需要重置IFS变量(用于数组的分隔符)。

OIFS=$IFS #save original
IFS=','
arr=($(awk 'FNR==NR {a[$1]=$2;next} a[$1] {print $1,a[$1]","}' second first))
IFS=$OIFS

echo ${arr[0]}
a 5
echo ${arr[1]}
b 8
echo ${arr[*]}
a 5
b 8
c 2
d 4

答案 1 :(得分:0)

使用join的解决方案可能是:

sort second > second.sort
IFS=','
arr=($(join first second.sort | tr '\n' ','))
rm second.sort

输出:

echo ${arr[0]}
a 5