Научете како да користите Awk вградени променливи - Дел 10


Додека го откриваме делот од карактеристиките на Awk, во овој дел од серијата, ќе го разгледаме концептот на вградени променливи во Awk. Постојат два типа на променливи што можете да ги користите во Awk, тоа се; променливи дефинирани од корисникот, кои ги опфативме во Дел 8 и вградени променливи.

Вградените променливи имаат вредности веќе дефинирани во Awk, но ние исто така можеме внимателно да ги менуваме тие вредности, вградените променливи вклучуваат:

  1. FILENAME : тековно влезно име на датотека (не менувај го името на променливата)
  2. FR : број на тековната влезна линија (тоа е влезна линија 1, 2, 3... така натаму, не менувајте го името на променливата)
  3. NF : број на полиња во тековната линија за внесување (не менувајте го името на променливата)
  4. OFS : сепаратор на излезно поле
  5. FS : сепаратор на поле за внесување
  6. ORS : сепаратор за излезни записи
  7. RS : сепаратор за влезни записи

Да продолжиме да ја илустрираме употребата на некои од вградените променливи на Awk погоре:

За да го прочитате името на датотеката на тековната влезна датотека, можете да ја користите вградената променлива FILENAME на следниов начин:

$ awk ' { print FILENAME } ' ~/domains.txt 

Ќе сфатите дека името на датотеката е испечатено за секоја влезна линија, тоа е стандардното однесување на Awk кога користите вградена променлива FILENAME.

Користејќи NR за броење на бројот на линии (записи) во влезна датотека, запомнете дека ги брои и празните линии, како што ќе видиме во примерот подолу.

Кога ја гледаме датотеката domains.txt со помош на командата cat, таа содржи 14 линии со текст и празни 2 линии:

$ cat ~/domains.txt
$ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt 

За да го броиме бројот на полиња во запис или линија, ја користиме вградената променлива NR на следниов начин:

$ cat ~/names.txt
$ awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt

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

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

Постојат два начини да го направите ова:

  1. еден метод е да се користи вградената променлива FS
  2. а втората е да се повика опцијата -F Awk

Разгледајте ја датотеката /etc/passwd на систем Линукс, полињата во оваа датотека се поделени со помош на знакот :, така што можеме да го наведеме како нов раздвојувач на полето за внесување кога сакаме да филтрираме одредени полиња како во следните примери:

Можеме да ја користиме опцијата -F на следниов начин:

$ awk -F':' '{ print $1, $4 ;}' /etc/passwd

Изборно, можеме да ја искористиме и вградената променлива FS како подолу:

$ awk ' BEGIN {  FS=“:” ; }  { print $1, $4  ; } ' /etc/passwd

За да наведете раздвојувач на излезни полиња, користете ја вградената променлива OFS, таа дефинира како ќе се одделат излезните полиња користејќи го знакот што го користиме како во примерот подолу:

$ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd

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

После ова, ќе напредуваме за да покриеме како можеме да ги користиме променливите на школка во операциите на командата Awk, затоа, останете поврзани со Tecmint.