簡體   English   中英

在awk命令之外使用awk變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM