Разница между 1.1 и текущей версией ЯзыкAWK.
@@ -1 +1,68 @@
-Awk -- язык программирования для обработки текста с синтаксисом похожим на Си.
+= Язык AWK
+
+Язык AWK был спроектирован сотрудниками Bell Labs как инструменты для работы с текстом. Есть в большинстве дистрибутивов линукс.
+Само название AWK является аббревиатурой фамилий его разработчиков Alfred Aho, Peter Weinberger, и Brian Kernighan.
+
+- Основы языка
+
+AWK как и ЯзыкSed ориентирован на построчную обработку текста. AWK может быть как частью конвейера, так и работать c файлами. Файл трактуется как набор записей(records). В свою очередь запись состоит из последовательности полей(fields). По умолчанию в AWK строка рассматривается как запись, тогда первое слово в строке будет первым полем, второе -- вторым и т.д. Доступ к полям производится с помощью специальных переменных, начинающихся со знака ''$''. Например:
+
+ $ '''echo 'Hello, World!' | awk '{ print $2 }''''
+ World!
+
+ $ '''echo 'Hello, World!' | awk '{ i = 1; print $i }''''
+ Hello,
+
+ Для доступа ко всей записи используется нулевое поле.
+
+ $ '''echo 'Hello, World!' | awk '{ print $0 }''''
+ Hello, World!
+
+ $ '''cat file.csv | sed -n '2 { p; }' | awk -F'\t' 'END { print NF; }''''
+
+Структура программы на AWK выглядит следующим образом:
+
+    ''шаблон { действие }''
+
+AWK сканирует входной поток на наличие шаблонов, в случае совпадения выполняются указанные действия.
+Как ''шаблон'' так и ''действие'' могут отсутствовать, но не одновременно. При отсутствии шаблона действие применяется ко всем строкам. Если отсутствует действие, то каждая строка содержащая ''шаблон'' просто печатается.
+
+В AWK существуют 2 специальных шаблона - BEGIN и END. Действие, описанное для шаблона BEGIN выполняется до обработки первой записи, действие для шаблона END выполняется после обработки последней записи. Например:
+
+
+ $ '''echo -e "1\n2\n3" | awk 'BEGIN {a = 0} {a += $1} END {printf("total sum is %d\n", a)}''''
+ total sum is 6
+
+На самом деле в примере выше блок с BEGIN лишний так как любая неинициализированная переменная содержит 0.
+
+
+--- Переменные
+
+По умолчанию разделителем полей в AWK является пробел или символ табуляции. Переопределить разделитель полей можно с помощью переменной FS (field separator)
+
+ $ '''cat /etc/passwd | awk 'BEGIN{FS = ":"} NR==1 {print $1, $7}''''
+ root /bin/bash
+
+- AWK и Sed
+
+- Сравнение AWK с другими языками программирования
+
+- Литература
+
+%R(
+%A Aho A. A.
+%A Kernighan B. W.
+%A Weinberger P. J.
+%I Bell Telephone Laboratories
+%D 1988
+%T The AWK Programming Language
+
+%A Robbins A.
+%T Effective AWK Programming
+%I O'Reilly
+%D 2001
+
+%R)
+
+
+# КатегорияЯзыкиПрограммирования