[英]Using awk variables outside awk command
命令
awk -F'\t' '{map[$1]=$4}' analytics-details-bkp-ga.txt
生成密鑰值映射中,例如鍵1 =值鍵2 =值...等
我有一個for循環,使用此映射獲取特定鍵的值
for i in `cat stores.txt`
do
.....
done
我需要在上面的map中使用for循環,如何使用它。我不想在awk命令中編寫for循環。有人可以幫忙在awk命令之外使用在awk命令中生成的地圖嗎?
如果bash >= 4
,則可以使用關聯數組,
如果可以發布示例輸入和輸出,則簡單的
awk
可能會解決您的問題。
既然你說
我需要在上面使用map進行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
您可以使用以下內容創建關聯數組(例如,在此處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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.