Како да се дозволи Awk да користи променливи на школка - Дел 11


Кога пишуваме скрипти за школка, обично вклучуваме други помали програми или команди како што се операциите Awk во нашите скрипти. Во случајот со Awk, мора да најдеме начини за пренесување на некои вредности од школката во операциите на Awk.

Ова може да се направи со користење на променливи на школка во командите на Awk, и во овој дел од серијата, ќе научиме како да му дозволиме на Awk да користи променливи на школка што може да содржат вредности што сакаме да ги пренесеме на командите на Awk.

Веројатно има два начини на кои можете да овозможите Awk да користи променливи на школка:

1. Користење на Shell Quoting

Дозволете ни да погледнеме пример за да илустрираме како всушност можете да користите цитирање на школка за да ја замените вредноста на променливата на школка во командата Awk. Во овој пример, сакаме да бараме корисничко име во датотеката /etc/passwd, да ги филтрираме и печатиме информациите за сметката на корисникот.

Затоа, можеме да напишеме скрипта test.sh со следнава содржина:

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

Потоа, зачувајте ја датотеката и излезете.

Интерпретација на командата Awk во скриптата test.sh погоре:

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

\/$username/ \ – цитирање на школка што се користи за замена на вредноста на корисничкото име на променливата на школка во командата Awk. Вредноста на корисничкото име е шаблонот што треба да се пребарува во датотеката /etc/passwd.

Имајте предвид дека двојниот цитат е надвор од скриптата Awk, „{ print $0 }“.

Потоа направете ја скриптата извршна и стартувајте ја на следниов начин:

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

Откако ќе ја извршите скриптата, ќе ви биде побарано да внесете корисничко име, напишете валидно корисничко име и притиснете Enter. Ќе ги видите деталите за сметката на корисникот од датотеката /etc/passwd како подолу:

2. Користење на Awk’s Variable Assignment

Овој метод е многу поедноставен и подобар во споредба со методот еден погоре. Со оглед на примерот погоре, можеме да извршиме едноставна команда за да ја завршиме работата. Според овој метод, ја користиме опцијата -v за да доделиме променлива на школка на променлива Awk.

Прво, креирајте променлива на школка, корисничко име и доделете ѝ го името што сакаме да го бараме во датотеката /etc/passswd:

username="aaronkilik"

Потоа напишете ја командата подолу и притиснете Enter:

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

Објаснување на горната команда:

  1. -v – Awk опција за декларирање на променлива
  2. корисничко име – е променливата на школка
  3. име – е променливата Awk

Дозволете ни да погледнеме внимателно во $0 ~ име во скриптата Awk, $0 ~ name {print $0}. Запомнете, кога ги опфативме Awk споредбените оператори во Дел 4 од оваа серија, еден од операторите за споредба беше моделот на вредност ~, што значи: точно ако вредноста се совпаѓа со шаблонот.

излез($0) на командата cat што се испраќа во Awk се совпаѓа со шаблонот (aaronkilik) што е името што го бараме во /etc/passwd, како резултат на операцијата за споредба е вистинита. Линијата што ги содржи информациите за сметката на корисникот потоа се печати на екранот.

Заклучок

Опфативме важен дел од карактеристиките на Awk, кои можат да ни помогнат да користиме променливи на школка во командите на Awk. Многу пати, ќе пишувате мали Awk програми или команди во скрипти на школка и затоа треба да имате јасно разбирање за тоа како да ги користите променливите на школка во командите на Awk.

Во следниот дел од серијата Awk, ќе навлеземе во уште еден критичен дел од карактеристиките на Awk, тоа се изјавите за контрола на протокот. Затоа, бидете во тек и ајде да продолжиме да учиме и споделуваме.