AWK - интерпретируемый язык. Основное назначение: обработка потоков текстовой информации.
Каждая строка, проходящая через AWK, разбивается на поля. Разделитель полей по-умолчанию - пробел, другой разделитель может быть задан или через ключ командной строки -F<delimiter char>, или через встроенную переменную FS:
Встроенные переменные:
''FS'' - разделитель полей
''NF'' - количество полей в текущей строке
''$NF'' - значение последнего поля строки
Примеры использования:
# cat /var/log/httpd/access_log | awk '{print $1}' | sort | uniq -c
$ cat /etc/passwd | awk -F: '{print $5}'
$ cat /etc/passwd | awk 'BEGIN { FS=":"} {print $5}'
$ cat /etc/passwd | awk 'BEGIN { FS=":" } { split($5,gecos,","); nf=split(gecos[1],name," "); print name[nf], name[1]}'
#!/bin/bash
awk -F: '{
print "dn: cn="$1",ou=People,o=MyOrg,c=US"
print "objectClass: top"
print "objectClass: person"
print "objectClass: organizationalPerson"
print "objectClass: inetOrgPerson"
print "objectClass: posixAccount"
print "objectClass: inetLocalMailRecipient"
print "objectClass: shadowAccount"
print "uid: "$1
gfields = split($5,gecos,",")
namefield = split(gecos[1], fullname, " ")
print "sn: " fullname[namefield]
print "givenName: "fullname[1]
print "cn: " $1
print "userPassword: {crypt}"$2
print "loginShell: "$7
print "uidNumber: "$3
print "gidNumber: "$4
print "homeDirectory: "$6
print "gecos: "$5
print "mail: "$1"@myorg.com"
if (gecos[3] != "" && gecos[3] != "NONE")
print "roomNumber: " gecos[3]
if (gecos[4] != "" && gecos[4] !~ /.*xx.*/ && gecos[4] !="NONE")
print "telephoneNumber: "gecos[4]
print "displayName: " gecos[1]
print ""
}'
Дата создания: 2006-05-24 13:35:05 (Фетисов Н. А. (naf))
Последнее изменение: 2006-05-31 19:45:23 (Фетисов Н. А. (naf))
Владелец: Фетисов Н. А. (naf)
Версия: 2 Все версии
Wiki::Admin Карта раздела Оглавление Изменения за сутки Изменения за неделю Изменения за месяц