LinuxForum.Fans
Тема

Скрипт awk

Автор: Kocmuk 13 сообщений 3904 просмотров
#107225

Как написать скрипт awk. Подайте любой пример. У меня лабораторная завтра будет, точнее написать скрипт awk dns.

#107231

Язык обработки шаблонов awk

есть куча примеров.

сложных скриптов я, честно говоря, не видел на awk. Эти самые сложные что нашёл. Вот на sed у мну есть посложнее. Вплоть до тетриса с арканоидом.

#107277
Lupo Alberto написал:
А что должен делать этот хитрый скрипт?

[console]doc@dt:~/tests$ df | sed -rn 's/(\S+)(\s+\S+){3}\s+(\S+).*/На устройстве \1 используется \3/p'
На устройстве Файловая используется Дост
На устройстве /dev/root используется 19%
На устройстве /dev/sda3 используется 3%
На устройстве /dev/sda5 используется 16%
На устройстве /dev/sda6 используется 42%
На устройстве /dev/sda7 используется 75%
На устройстве /dev/sda8 используется 77%
На устройстве /dev/sdb5 используется 90%
На устройстве tmpfs используется 0%
[/console]
как-то так...

#107278

Например /myprogram.sh 172.16.0.1
Должно выводит чей этот айпи

#107281
Kocmuk написал:
Должно выводит чей этот айпи

что значит "чей". Это локальный IP. что там захочет этот аноним, то и будет.

#107283

В файле /etc/resolf.conf
============================
# Generated by NetworkManager
nameserver 172.16.0.1
============================
./myprogram.sh 172.16.0.1
nameserver
============================
Вроде так. Или наоборот. То есть сначала имя, а выводит айпи.

#107288
Kocmuk написал:
В файле /etc/resolf.conf
Kocmuk написал:
Вроде так. Или наоборот. То есть сначала имя, а выводит айпи.

а что вы хотите-то?

#107319
text

awk '$2 == "172.16.0.1" {print $1}' /etc/resolv.conf
#107383
Lupo Alberto написал:
text

awk '$2 == "172.16.0.1" {print $1}' /etc/resolv.conf

Это только определенный ip. Допустим мы не знаем ip.
Как все реализовать?
awk --posix '/[[:space:]]+[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}/ { print $2; }' /etc/resolv.conf | sort | uniq
Может так?
У меня вопрос как поставить условие если я хочу вывести те ip которые соответствует имени DNS.

#107399
Kocmuk написал:
У меня вопрос как поставить условие если я хочу вывести те ip которые соответствует имени DNS.

вот это не к awk.
[console]$ sed -rn 's/^(\w+)\s+([0-9.]+).*/\2 \1/p' /etc/resolv.conf
193.12.150.26 nameserver
212.247.152.26 nameserver
[/console]

#107404
Kocmuk написал:
awk --posix '/[[:space:]]+[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}/ { print $2; }' /etc/resolv.conf | sort | uniq

Тогда уж { print $1 }

Kocmuk написал:
У меня вопрос как поставить условие если я хочу вывести те ip которые соответствует имени DNS.
text

awk '$1 == "nameserver" {print $2}' /etc/resolv.conf
#107539

Да дело в том мне надо написать скрипт, а не команды.
./скрипт ya.ru
Находит есть ли в этом файле(/etc/resolf.conf) имя ya.ru. Если есть то выводит dns. Если нет то сообщение соответствующее.

Войдите или зарегистрируйтесь, чтобы ответить.