OSS Group OSS Group
>  Карта
>  Поиск
>  Контакты
>  OSS Group  ::  Admin  ::  Использование awk
  
РегистрацияЗабыли пароль?

↓  Быстрый поиск по Wiki


Режим поиска:   И   ИЛИ

↓  Доступные Wiki

↓  Навигация по сайту

[]

↓  Последняя новость

Загрузка...

↓  На эту страницу ссылаются:

Get Firefox!
[~]

Использование awk

AWK - интерпретируемый язык. Основное назначение: обработка потоков текстовой информации.

Каждая строка, проходящая через AWK, разбивается на поля. Разделитель полей по-умолчанию - пробел, другой разделитель может быть задан или через ключ командной строки -F<delimiter char>, или через встроенную переменную FS:

Встроенные переменные:
''FS'' - разделитель полей
''NF'' - количество полей в текущей строке
''$NF'' - значение последнего поля строки

Примеры использования:

  • Получение списка адресов хостов, обращавшихся к веб-серверу, с указанием кол-ва запросов:
 # cat /var/log/httpd/access_log | awk '{print $1}' | sort | uniq -c
  • Получение списка полей GECOS из passwd:
 $ cat /etc/passwd | awk -F: '{print $5}'
 $ cat /etc/passwd | awk 'BEGIN { FS=":"} {print $5}'
  • Получение имени и фамилии из полей GECOS:
 $ cat /etc/passwd | awk 'BEGIN { FS=":" } { split($5,gecos,","); nf=split(gecos[1],name," "); print name[nf], name[1]}'
  • Получение LDIF-файла по записи в passwd:
 #!/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   Оглавление  Карта раздела  Изменения за сутки  Изменения за неделю  Изменения за месяц



Valid XHTML 1.0 Transitional  Valid CSS!  [Valid RSS]