Puncte:0

Script shell: Cum se creează un dicționar din listă?

drapel cn
#!/usr/bin/env bash
b=$(awk -F „[|]” „{printează $1}” test.txt)
zile=$(awk -F „[{}]” „{printează $1}” test.txt) #zile
time=$(awk -F "[{}]" '{print $2}' test.txt) #time
#count=`echo $d | wc -l`
#echo $număr
declara -A arr
pentru i în $zile;do
        eco $i
    pentru j în $timp;
        eco $j
    Terminat
Terminat

test.txt:

azureuser@disk-bkp:~$ cat test.txt
 Lu Ma Mi Jo Vin {19:00 18:00 16:00 19:00 19:00}

Cel de mai jos este rezultatul din codul de mai sus:

Lu
19:00
18:00
16:00
19:00
19:00
Tu
19:00
18:00
16:00
19:00
19:00
Noi
19:00
18:00
16:00
19:00
19:00
Th
19:00
18:00
16:00
19:00
19:00
pr
19:00
18:00
16:00
19:00
19:00

rezultatul așteptat este:

lu
 19:00
Tu
18:00

Noi
16:00
Th
19:00

pr
19:00

Am vrut să creez o pereche cheie/valoare pe baza listelor de mai sus și trebuie să obțin valoare bazat pe cheie. $zile ieșirea este Lu Ma Mi J Pr și $timp este 19:00 23:00 16:00 23:00 15:00. Rezultatul așteptat este Lu:19:00 Tu:23:00 Mi:16:00 Jo:23:00 Vi:15:00

bac0n avatar
drapel cn
Editați-vă întrebarea cu informații suplimentare despre modul în care este organizat *text.txt*.
Puncte:0
drapel cn

Dacă doriți să utilizați awk pentru setarea matricei cheie/valoare, trebuie să schimbați fișierul de intrare în:

Luni 19:00
Ma ora 18:00
Noi 16:00
Jo 19:00
Pr 19:00

Atunci

awk '{a[$1]=$2} END {pentru (i în a) tipăriți i, a[i]}' test.txt 

Ma ora 18:00
Noi 16:00
Pr 19:00
Luni 19:00
Jo 19:00

a[] este matricea cheie/valoare dorită. Dar după cum puteți vedea ordinea s-a schimbat prin awk. Pentru a preveni acest lucru, modificăm în continuare fișierul de intrare în:

1 lună 19:00
2Mar 18:00
3 Noi 16:00
4 19:00
5Fr 19:00

astfel încât să putem restabili ordinea folosind prima coloană mai târziu. Atunci

awk '{a[$1]=$2} END {pentru (i în a) tipăriți i, a[i]}' test.txt | sortare -k1 | tăiat -c 2- | tr '\n' ' '

Care oferă rezultatul dorit:

Luni 19:00 Ma 18:00 Mi 16:00 Jo 19:00 Vin 19:00

Dar rețineți că cheile din tabloul a[] conțin acum coloana suplimentară pe care este posibil să nu o doriți.

hariraj avatar
drapel cn
Bună, domnule Elm, de fapt, adaug rezultatul **tag=`curl -s -H Metadata:true --noproxy "*" "http://169.254.169.254/metadata/instance/compute/tagsList?api-version =2019-06-04"| jq -r '.[]|select(.name == "auto_stop").value' | cut -d '' -f1 | sed 's/[][]//g' ` pentru a testa.txt
hariraj avatar
drapel cn
deci din fișierul test.txt conține **Lu Ma Mi Jo Vr {19:00 18:00 16:00 19:00 19:00}**

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.