[英]Shell script for creating arrays
我想為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]
幫助非常感謝!
您需要重置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
使用join
的解決方案可能是:
sort second > second.sort
IFS=','
arr=($(join first second.sort | tr '\n' ','))
rm second.sort
輸出:
echo ${arr[0]}
a 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.