UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Мы могли бы определить программу
ind$ awk '{printf "t%sn", $0}' $*Здесь выдается символ табуляции (
tПредположим, что вы хотите найти в файле
/etc/passwd$ awk -F: '$2 == ""' /etc/passwdШаблон проверяет, является ли второе поле пустой строкой (операция
==Такой шаблон можно задать различными способами:
$2=="" $2~/^$/ $2!~/./ length($2) == 0 Символ
~!Встроенная функция
length!($2=="")Операция
!sedНаиболее типичное использование шаблонов в программе
awk%$ NF % 2 != 0 # напечатать, если нечетное число полейДругой шаблон выдает исключительно длинные строки, используя встроенную функцию
lengthlength ($0) >72 # напечатать, если слишком длинная строкаВ программе
awk#Можно сделать выходной поток более информативным, снабдив его предупреждающим сообщением и частью слишком длинной строки, используя для этого встроенную функцию
substrlength($0) > 72 {print "Строка", NR, "длинная" : substr($0, 1, 60)}Функция
substr(s, m, n)mnnmdate$ dateThu Sep 29 12:17:01 EDT 1983$ date | awk '{print substr($4, 1, 5) }'12:17$Сколько различных программ
awkcatBEGINENDПрограмма
awkBEGINENDBEGINFS$ awk 'BEGIN { FS = ":" }> $2 == "" ' /etc/paswd$Действия, указанные в шаблоне
END$ awk 'END {print NR}'...Здесь печатается число строк входного потока.
До сих пор в примерах выполнялись только простые операции с текстом. Достоинством программы
awk{s=s+$1}END {print s}Поскольку число значений доступно с помощью переменной
NREND {print s, s/NR}мы получим и сумму, и среднее значение.
Этот пример показывает, как используются переменные в awk. Переменная
sВ программе
awk{s+=$1}END {print}Запись
s+=$1s=s+$1 { nc+=length($0) +1 # число символов, +1 для n nw += NF # число слов }END {print NR, nw, nc }Здесь подсчитывается число строк, слов и символов входного потока, т.е. выполняются те же действия, что и по команде
wc
