Bir awk dizisindeki tüm içeriği nasıl görebilirim?


41

Anladığım kadarıyla awk dizi python dict gibi bir şeydir.

Bu yüzden araştırmak için aşağıdaki kodu yazıyorum:

awk '{my_dict[$1] = $2} END { print my_dict}' zen

Ve anladım: awk: can't read value of my_dict; it's an array name.

İlk sütun bir sayı olmadığından, dizinin toplam içeriğini nasıl okuyabilir ya da onu nasıl geçebilirim?

Yanıtlar:


60

Dizinin tuşlarını dolaşıp karşılık gelen değerleri çıkarabilirsiniz:

awk '{my_dict[$1] = $2} END { for (key in my_dict) { print my_dict[key] } }' zen

Bir Python sözlüğünde elde ettiğinize benzer bir çıktı elde etmek için, anahtarı da yazdırabilirsiniz:

awk '{my_dict[$1] = $2} END { for (key in my_dict) { print key ": " my_dict[key] } }' zen

Bu anahtar türünden bağımsız olarak çalışır.


14

Bu dizi içinde döngü olurdu:

END { for (i in my_dict) print my_dict[i] }

i endeksidir.


8

Array in awkdictionary gibi birinci sınıf bir nesne değil Python. İçinde awkalt simge içermeyen dizi adı yalnızca iki bağlamda kullanılabilir :

  • Bir fonksiyon tanımındaki veya fonksiyon çağrısındaki bir parametre.
  • Anahtar kelimeden sonra ad belirteci in.

Diğer bağlamda, awkbir hata yükseltir.

forBir dizinin içeriğini yinelemek ve yazdırmak için bir döngüye ihtiyacınız vardır :

$ echo 1 2 | awk '{my_dict[$1] = $2};END {for(i in my_dict) print my_dict[i]}'
2
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.