Bii o ṣe le Gba Awk laaye lati Lo Awọn oniyipada Ikarahun - Apakan 11


Nigbati a ba kọ awọn iwe afọwọkọ ikarahun, a ni deede pẹlu awọn eto kekere miiran tabi awọn aṣẹ bii awọn iṣẹ Awk ninu awọn iwe afọwọkọ wa. Ninu ọran Awk, a ni lati wa awọn ọna ti gbigbe diẹ ninu awọn iye lati ikarahun si awọn iṣẹ Awk.

Eyi le ṣee ṣe nipa lilo awọn oniyipada ikarahun laarin awọn ofin Awk, ati ni apakan yii, a yoo kọ bi a ṣe le gba Awk laaye lati lo awọn oniyipada ikarahun ti o le ni awọn iye ti a fẹ kọja si awọn ofin Awk.

Nibẹ ṣee ṣe awọn ọna meji ti o le mu Awk ṣiṣẹ lati lo awọn oniyipada ikarahun:

1. Lilo Ngba ikarahun

Jẹ ki a wo apẹẹrẹ kan lati ṣapejuwe bi o ṣe le lo atokọ ikarahun gangan lati rọpo iye ti iyipada ikarahun kan ninu aṣẹ Awk kan. Ni apẹẹrẹ yii, a fẹ lati wa orukọ olumulo kan ninu faili/ati be be lo/passwd, ṣe àlẹmọ ki o tẹ alaye akọọlẹ olumulo naa.

Nitorinaa, a le kọ iwe test.sh pẹlu akoonu atẹle:

#!/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 }'

Lẹhinna, fipamọ faili naa ki o jade.

Itumọ ti aṣẹ Awk ni test.sh iwe afọwọkọ loke:

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

\"/ $orukọ olumulo/\" - agbasọ ikarahun ti a lo lati rọpo iye orukọ olumulo iyipada ikarahun ni aṣẹ Awk. Iye orukọ olumulo ni apẹẹrẹ lati wa ninu faili/ati be be lo/passwd.

Akiyesi pe agbasọ meji ni ita iwe afọwọkọ Awk, '{{tẹjade $0}' .

Lẹhinna jẹ ki iwe afọwọkọ ṣiṣẹ ati ṣiṣe bi atẹle:

$ chmod  +x  test.sh
$ ./text.sh 

Lẹhin ṣiṣe akosile naa, ao beere ọ lati tẹ orukọ olumulo kan sii, tẹ orukọ olumulo to wulo kan ki o tẹ Tẹ. Iwọ yoo wo awọn alaye akọọlẹ olumulo lati faili/ati be be lo/passwd bi isalẹ:

2. Lilo Iṣẹ iyansilẹ Awk

Ọna yii rọrun pupọ ati dara julọ ni ifiwera si ọna ọkan loke. Ṣiyesi apẹẹrẹ loke, a le ṣiṣe aṣẹ ti o rọrun lati ṣaṣeyọri iṣẹ naa. Labẹ ọna yii, a lo aṣayan -v lati fi oniyipada ikarahun kan si oniyipada Awk kan.

Ni ibere, ṣẹda oniyipada ikarahun kan, orukọ olumulo ki o fun ni orukọ ti a fẹ lati wa ninu /etc/passswd faili:

username="aaronkilik"

Lẹhinna tẹ aṣẹ ni isalẹ ki o tẹ Tẹ:

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

Alaye ti aṣẹ ti o wa loke:

  1. -v - Aṣayan Awk lati sọ oniyipada kan
  2. orukọ olumulo - ni oniyipada ikarahun naa
  3. orukọ - ni oniyipada Awk

Jẹ ki a farabalẹ wo $0 ~ orukọ inu iwe afọwọkọ Awk, $0 ~ orukọ {tẹjade $0} . Ranti, nigbati a ba bo awọn oniṣẹ iṣapẹẹrẹ Awk ni Apakan 4 ti jara yii, ọkan ninu awọn oniṣẹ afiwe ni iye ~ apẹẹrẹ, eyiti o tumọ si: otitọ ti iye ba ba apẹẹrẹ naa mu.

Ipilẹṣẹ ($0) ti aṣẹ ologbo ti a fun si Awk baamu apẹẹrẹ (aaronkilik) eyiti o jẹ orukọ ti a n wa ni/ati be be lo/passwd, bi abajade, awọn isẹ lafiwe jẹ otitọ. Laini ti o ni alaye akọọlẹ olumulo jẹ lẹhinna tẹ lori iboju.

Ipari

A ti bo apakan pataki ti awọn ẹya Awk, ti o le ṣe iranlọwọ fun wa lati lo awọn iyipada ikarahun laarin awọn aṣẹ Awk. Ni ọpọlọpọ awọn igba, iwọ yoo kọ awọn eto Awk kekere tabi awọn aṣẹ laarin awọn iwe afọwọkọ ikarahun ati nitorinaa, o nilo lati ni oye oye ti bawo ni a ṣe le lo awọn oniyipada ikarahun laarin awọn aṣẹ Awk.

Ni abala atẹle ti Awk jara, a yoo ṣafọ sinu apakan pataki miiran ti awọn ẹya Awk, iyẹn ni awọn alaye iṣakoso ṣiṣan. Nitorina wa ni aifwy ki a jẹ ki a kọ ẹkọ ati pinpin.


Gbogbo awọn Ẹtọ wa ni ipamọ. © Linux-Console.net • 2019-2024