Kaip leisti Awk naudoti apvalkalo kintamuosius – 11 dalis


Kai rašome apvalkalo scenarijus, į savo scenarijus paprastai įtraukiame kitas mažesnes programas arba komandas, pvz., Awk operacijas. Awk atveju turime rasti būdų, kaip perduoti kai kurias reikšmes iš apvalkalo į Awk operacijas.

Tai galima padaryti naudojant apvalkalo kintamuosius Awk komandose, o šioje serijos dalyje sužinosime, kaip leisti Awk naudoti apvalkalo kintamuosius, kuriuose gali būti verčių, kurias norime perduoti Awk komandoms.

Yra du būdai, kaip įgalinti Awk naudoti apvalkalo kintamuosius:

1. Naudojant Shell Qoting

Pažvelkime į pavyzdį, kad parodytume, kaip iš tikrųjų galite naudoti apvalkalo citatą, kad pakeistumėte apvalkalo kintamojo reikšmę komandoje Awk. Šiame pavyzdyje norime ieškoti naudotojo vardo faile /etc/passwd, filtruoti ir atspausdinti naudotojo paskyros informaciją.

Todėl galime parašyti test.sh scenarijų su tokiu turiniu:

#!/bin/bash

#read user input
read -p "Please enter username:" username

#search for username in /etc/passwd file and print details on the screen
cat /etc/passwd | awk "/$username/ "' { print $0 }'

Po to išsaugokite failą ir išeikite.

Awk komandos aiškinimas aukščiau esančiame test.sh scenarijuje:

cat /etc/passwd | awk "/$username/ "' { print $0 }'

"/$username/ " – apvalkalo citata, naudojama pakeisti apvalkalo kintamojo username reikšmę komandoje Awk. naudotojo vardas yra šablonas, kurio reikia ieškoti faile /etc/passwd.

Atminkite, kad dviguba kabutė yra už Awk scenarijaus ribų, „{ print $0 }“.

Tada padarykite scenarijų vykdomąjį ir paleiskite jį taip:

chmod  +x  test.sh
./text.sh 

Paleidę scenarijų būsite paraginti įvesti naudotojo vardą, įveskite tinkamą naudotojo vardą ir paspauskite Enter. Išsamią naudotojo paskyros informaciją matysite iš failo /etc/passwd, kaip nurodyta toliau:

2. Awk kintamojo priskyrimo naudojimas

Šis metodas yra daug paprastesnis ir geresnis, palyginti su pirmiau pateiktu metodu. Atsižvelgdami į aukščiau pateiktą pavyzdį, galime paleisti paprastą komandą, kad atliktume darbą. Pagal šį metodą mes naudojame parinktį -v, kad priskirtume apvalkalo kintamąjį Awk kintamajam.

Pirmiausia sukurkite apvalkalo kintamąjį naudotojo vardas ir priskirkite jam pavadinimą, kurio norime ieškoti /etc/passswd faile:

username="aaronkilik"

Tada įveskite žemiau esančią komandą ir paspauskite Enter:

cat /etc/passwd | awk -v name="$username" ' $0 ~ name {print $0}'

Aukščiau pateiktos komandos paaiškinimas:

  1. -v – Awk parinktis kintamajam deklaruoti
  2. naudotojo vardas – yra apvalkalo kintamasis
  3. vardas – yra Awk kintamasis

Atidžiai pažvelkime į $0 ~ pavadinimas Awk scenarijaus viduje, ' $0 ~ pavadinimas {print $0}. Atminkite, kai šios serijos 4 dalyje aptarėme Awk palyginimo operatorius, vienas iš palyginimo operatorių buvo vertės ~ šablonas, o tai reiškia: tiesa, jei reikšmė atitinka šabloną.

Cat komandos, perduodamos į Awk, išvestis($0) atitinka šabloną (aaronkilik), kuris yra pavadinimas, kurio ieškome /etc/passwd >, todėl palyginimo operacija yra teisinga. Tada ekrane atspausdinama eilutė, kurioje yra vartotojo paskyros informacija.

Išvada

Apėmėme svarbią Awk funkcijų skyrių, kuris gali padėti mums naudoti apvalkalo kintamuosius Awk komandose. Daug kartų jūs rašysite mažas Awk programas arba komandas apvalkalo scenarijuose, todėl turite aiškiai suprasti, kaip naudoti apvalkalo kintamuosius Awk komandose.

Kitoje „Awk“ serijos dalyje pasinersime į dar vieną svarbų „Awk“ funkcijų skyrių, ty srauto valdymo teiginius. Taigi likite naujienos ir toliau mokykitės bei dalinkitės.