Учебники

AWK — основной синтаксис

AWK прост в использовании. Мы можем предоставить команды AWK либо непосредственно из командной строки, либо в виде текстового файла, содержащего команды AWK.

Командная строка AWK

Мы можем указать команду AWK в одинарных кавычках в командной строке, как показано ниже:

awk [options] file ...

пример

Рассмотрим текстовый файл marks.txt со следующим содержанием —

1) Amit     Physics    80
2) Rahul    Maths      90
3) Shyam    Biology    87
4) Kedar    English    85
5) Hari     History    89

Давайте отобразим полное содержимое файла, используя AWK, следующим образом:

пример

[jerry]$ awk '{print}' marks.txt 

Выполнив этот код, вы получите следующий результат —

Выход

1) Amit     Physics    80
2) Rahul    Maths      90
3) Shyam    Biology    87
4) Kedar    English    85
5) Hari     History    89

Файл программы AWK

Мы можем предоставить команды AWK в файле сценария, как показано ниже:

awk [options] -f file ....

Сначала создайте текстовый файл command.awk, содержащий команду AWK, как показано ниже —

{print}

Теперь мы можем дать команду AWK прочитать команды из текстового файла и выполнить действие. Здесь мы достигаем того же результата, что и в приведенном выше примере.

пример

[jerry]$ awk -f command.awk marks.txt

Выполнив этот код, вы получите следующий результат —

Выход

1) Amit  Physics 80
2) Rahul Maths   90
3) Shyam Biology 87
4) Kedar English 85
5) Hari  History 89

AWK Стандартные Опции

AWK поддерживает следующие стандартные параметры, которые могут быть предоставлены из командной строки.

Опция -v

Эта опция присваивает значение переменной. Это позволяет присваивать перед выполнением программы. В следующем примере описано использование параметра -v.

пример

[jerry]$ awk -v name=Jerry 'BEGIN{printf "Name = %s\n", name}'

Выполнив этот код, вы получите следующий результат —

Выход

Name = Jerry

Опция —dump-variable [= file]

Он печатает отсортированный список глобальных переменных и их окончательных значений в файл. Файл по умолчанию — awkvars.out .

пример

[jerry]$ awk --dump-variables ''
[jerry]$ cat awkvars.out 

Выполнив приведенный выше код, вы получите следующий результат —

Выход

ARGC: 1
ARGIND: 0
ARGV: array, 1 elements
BINMODE: 0
CONVFMT: "%.6g"
ERRNO: ""
FIELDWIDTHS: ""
FILENAME: ""
FNR: 0
FPAT: "[^[:space:]]+"
FS: " "
IGNORECASE: 0
LINT: 0
NF: 0
NR: 0
OFMT: "%.6g"
OFS: " "
ORS: "\n"
RLENGTH: 0
RS: "\n"
RSTART: 0
RT: ""
SUBSEP: "\034"
TEXTDOMAIN: "messages"

Опция —help

Эта опция выводит справочное сообщение на стандартный вывод.

пример

[jerry]$ awk --help

Выполнив этот код, вы получите следующий результат —

Выход

Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options : GNU long options: (standard)
   -f progfile                --file=progfile
   -F fs                      --field-separator=fs
   -v var=val                 --assign=var=val
Short options : GNU long options: (extensions)
   -b                         --characters-as-bytes
   -c                         --traditional
   -C                         --copyright
   -d[file]                   --dump-variables[=file]
   -e 'program-text'          --source='program-text'
   -E file                    --exec=file
   -g                         --gen-pot
   -h                         --help
   -L [fatal]                 --lint[=fatal]
   -n                         --non-decimal-data
   -N                         --use-lc-numeric
   -O                         --optimize
   -p[file]                   --profile[=file]
   -P                         --posix
   -r                         --re-interval
   -S                         --sandbox
   -t                         --lint-old
   -V                         --version

Опция —lint [= fatal]

Эта опция позволяет проверять непереносимые или сомнительные конструкции. Когда указан фатальный аргумент, предупреждающие сообщения рассматриваются как ошибки. Следующий пример демонстрирует это —

пример

[jerry]$ awk --lint '' /bin/ls

Выполнив этот код, вы получите следующий результат —

Выход

awk: cmd. line:1: warning: empty program text on command line
awk: cmd. line:1: warning: source file does not end in newline
awk: warning: no program text at all!

Опция —posix

Эта опция включает строгую совместимость с POSIX, в которой отключены все общие и специфичные для gawk расширения.

Опция —profile [= file]

Эта опция генерирует печатную версию программы в файле. Файл по умолчанию — awkprof.out . Ниже простой пример иллюстрирует это —

пример

[jerry]$ awk --profile 'BEGIN{printf"---|Header|--\n"} {print} 
END{printf"---|Footer|---\n"}' marks.txt > /dev/null 
[jerry]$ cat awkprof.out

Выполнив этот код, вы получите следующий результат —

Выход

# gawk profile, created Sun Oct 26 19:50:48 2014

   # BEGIN block(s)

   BEGIN {
      printf "---|Header|--\n"
   }

   # Rule(s) {
      print $0
   }

   # END block(s)

   END {
      printf "---|Footer|---\n"
   }

Опция —traditional

Эта опция отключает все специфичные для gawk расширения.

Опция —version

Эта опция отображает информацию о версии программы AWK.

пример

[jerry]$ awk --version

Когда этот код выполняется, он дает следующий результат —

Выход