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 # напечатать, если нечетное число полей
Другой шаблон выдает исключительно длинные строки, используя встроенную функцию
length
length ($0) >72 # напечатать, если слишком длинная строка
В программе
awk
#
Можно сделать выходной поток более информативным, снабдив его предупреждающим сообщением и частью слишком длинной строки, используя для этого встроенную функцию
substr
length($0) > 72 {print "Строка", NR, "длинная" : substr($0, 1, 60)}
Функция
substr(s, m, n)
m
n
n
m
date
$ date
Thu Sep 29 12:17:01 EDT 1983
$ date | awk '{print substr($4, 1, 5) }'
12:17
$
Сколько различных программ
awk
cat
BEGIN
END
Программа
awk
BEGIN
END
BEGIN
FS
$ awk 'BEGIN { FS = ":" }
> $2 == "" ' /etc/paswd
$
Действия, указанные в шаблоне
END
$ awk 'END {print NR}'...
Здесь печатается число строк входного потока.
До сих пор в примерах выполнялись только простые операции с текстом. Достоинством программы
awk
{s=s+$1}
END {print s}
Поскольку число значений доступно с помощью переменной
NR
END {print s, s/NR}
мы получим и сумму, и среднее значение.
Этот пример показывает, как используются переменные в awk. Переменная
s
В программе
awk
{s+=$1}
END {print}
Запись
s+=$1
s=s+$1
{ nc+=length($0) +1 # число символов, +1 для n
nw += NF # число слов
}
END {print NR, nw, nc }
Здесь подсчитывается число строк, слов и символов входного потока, т.е. выполняются те же действия, что и по команде
wc