echo "Live in a"> echo "Live in a"> echo "Live in a" />

Waarde toekennen van een gearchiveerde (positionele variabele) in een door de gebruiker gedefinieerde variabele in Gawk/awk

Ik maak een variabele aan met de naam "grootte" en probeer hieraan een waarde toe te kennen van de variabele gawk positional. Maar dat lijkt niet te werken. In het onderstaande voorbeeld probeer ik de waarde van veld 4 op te slaan in een variabele "grootte". Wanneer ik het variabele formaat afdruk, wordt in plaats daarvan alleen het bestand 4 afgedrukt.

Hoe kan ik de ingediende waarde opslaan in een variabele voor later gebruik?

prompt>  echo "Live in a groot city" | gawk '/Live/ {size=$4; print $size}'

Het volgende wordt uitgevoerd: Woon in een grote stad

Ik zou graag alleen dit willen zien:

groot

0

1 antwoord

Laat het dollarteken weg. awk is net als C, niet zoals shell of perl, waar je geen extra interpunctie nodig hebt om een ​​variabele te dereferen. U gebruikt alleen een dollarteken om de waarde van het n'de veld op de huidige regel te krijgen.

echo "Live in a big city" | gawk '/Live/ {size=$4; print size}'

De reden dat de hele regel wordt afgedrukt, is deze: de awk-variabele size heeft de waarde big . Vervolgens, in de print-instructie, awk dereferences de size variabele en probeert print $ big . De string "groot" wordt geïnterpreteerd als een geheel getal en omdat het niet begint met een cijfer, wordt het behandeld als het getal 0. Dus krijg je print $ 0 , en dus de volledige regel.

2
toegevoegd