Како користити команду авк на Линуку

На Линук-у, авк је динамо за манипулацију текстом у командној линији, као и моћан скриптни језик. Ево увода у неке од његових најбољих карактеристика.

Како је авк добио име

Команда авк је именована коришћењем иницијала троје људи који су написали оригиналну верзију 1977: Алфред Ахо, Петер Веинбергер, и Бриан Кернигхан. Ова три човека су била из легендарних АТ&Т Белл Лабораториес Уник пантеон. Уз доприносе многих других од тада, авк је наставио да се развија.

То је потпуни скрипт језик, као и комплетан алат за манипулацију текстом за командну линију. Ако вам овај чланак пробуди апетит, можете проверите сваки детаљ о авк-у и његовој функционалности.

Правила, обрасци и радње

авк ради на програмима који садрже правила која се састоје од образаца и акција. Акција се извршава на тексту који одговара шаблону. Обрасци су затворени у витичасте заграде ({}). Заједно, образац и акција чине правило. Цео авк програм је стављен у једноструке наводнике (‘).

Хајде да погледамо најједноставнији тип авк програма. Нема шаблон, тако да одговара сваком реду текста унетог у њега. То значи да се акција извршава на свакој линији. Добро користите га на излазу из ко командује.

Ево стандардног излаза од кога:

who

Тхе

Можда нам нису потребне све те информације, већ само желимо да видимо имена на рачунима. Можемо пренети излаз из вхо у авк, а затим рећи авк-у да штампа само прво поље.

Подразумевано, авк поље сматра низом знакова окружених размаком, почетком реда или крајем реда. Поља се идентификују знаком долара ($) и бројем. Дакле, $1 представља прво поље, које ћемо користити са радњом штампања за штампање првог поља.

  8 најбољих векторских база података за ослобађање правог потенцијала АИ

Укуцавамо следеће:

who | awk '{print $1}'

авк штампа прво поље и одбацује остатак реда.

Можемо да штампамо онолико поља колико желимо. Ако додамо зарез као сепаратор, авк штампа размак између сваког поља.

Уписујемо следеће да бисмо такође одштампали време када се особа пријавила (четврто поље):

who | awk '{print $1,$4}'

Постоји неколико посебних идентификатора поља. Они представљају цео ред текста и последње поље у реду текста:

$0: Представља цео ред текста.
$1: Представља прво поље.
$2: Представља друго поље.
$7: Представља седмо поље.
45 долара: Представља 45. поље.
$НФ: означава „број поља“ и представља последње поље.

Откуцаћемо следеће да бисмо приказали малу текстуалну датотеку која садржи кратак цитат који се приписује Деннис Ритцхие:

cat dennis_ritchie.txt

Тхе

Желимо да авк штампа прво, друго и последње поље цитата. Имајте на уму да иако је омотан у прозору терминала, то је само један ред текста.

Укуцавамо следећу команду:

awk '{print $1,$2,$NF}' dennis_ritchie.txt

Не познајемо ту „једноставност“. је 18. поље у реду текста и није нас брига. Оно што знамо је да је то последње поље и можемо да користимо $НФ да добијемо његову вредност. Период се само сматра још једним ликом у