命令
awk -F'\t' '{map[$1]=$4}' analytics-details-bkp-ga.txt
例如,生成键值映射 键1 =值 key2 = value2 ......等等
我有一个for循环使用此映射来获取特定键的值
for i in `cat stores.txt`
do
.....
done
我需要使用map for above for循环,如何使用它。我不想在awk命令中编写for循环。有人可以帮助你如何使用awk命令之外的awk命令生成的映射吗? / p>
答案 0 :(得分:2)
如果你有bash >= 4
,那么你可以使用关联数组
如果您可以发布样本输入和输出,简单的
awk
可以解决您的问题 问题
既然你说过
我需要使用map for above for循环,如何使用它。我不想这样做 在awk命令中写入for循环。
我建议使用bash关联数组,
示例输入
[akshay@localhost tmp]$ cat testfile
foo bar
jack john
me you
now then
so me
脚本
[akshay@localhost tmp]$ cat test.sh
#!/usr/bin/env bash
declare -A assoc
while read -r col1 col2; do
assoc["$col1"]=$col2;
done < testfile
for key in "${!assoc[@]}"; do
echo "${key} ---> ${assoc[${key}]}"
done
输出
[akshay@localhost tmp]$ bash test.sh
jack ---> john
so ---> me
now ---> then
foo ---> bar
me ---> you
答案 1 :(得分:0)
您可以使用以下内容创建关联数组(例如,此处为map
):
declare -A map
for i in $(awk -F'\t' '{map[$1]=$2} END{ for( key in map) {print key":"map[key] }}' file)
do
key=${i%:*}
value=${i#*:}
map[$key]=$value
done