我希望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]
非常感谢!
答案 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