Awk: изучение сценариев оболочки с помощью команды терминала awk

Awk: изучение сценариев оболочки с помощью команды терминала awk

Awk: изучение сценариев оболочки с помощью команды терминала awk

Команда "awk" в свободных операционных системах типа GNU / Linux - очень мощная команда, которая помогает нам иметь больший контроль при обработке данных из других команд или команд. Название AWK происходит от инициалов фамилий его авторов: Альфред. Aхо, питер WЭйнбергер и Брайан KЭрниган.

Эта команда предоставляет язык сценариев для обработки текста, с помощью которого мы можем: определять переменные, использовать строки и арифметические операторы, использовать управление потоком и циклы, а также создавать форматированные отчеты. Фактически, Awk - это больше, чем просто команда обработки шаблонов, это целый язык семантического анализа.

Введение в команду "awk"

AWK был одной из первых очень популярных консольных утилит для управления (обработки / извлечения) данных за счет максимизации функциональности конвейеров UNIX. Язык, предоставляемый этой утилитой, в настоящее время является стандартом почти во всех современных UNIX-подобных операционных системах, настолько, что он является частью основных спецификаций UNIX, поэтому он обычно уже установлен в большинстве из них по умолчанию.

Его наиболее распространенный синтаксис: awk "программа" файлы, а где "программа" может быть: шаблон {действие} шаблон {действие}. Команда читает вводимый файл по одной строке за раз. Каждая строка по порядку сравнивается с каждым шаблоном; для каждого шаблона, соответствующего строке, выполняется соответствующее действие.

Простой пример вроде:

awk -F: '$1=="root" {print}' /etc/passwd

он запрашивает первое поле, является ли оно корнем каждой строки в / etc / passwd, и печатает его с учетом символа ":" с -F: в качестве разделителя полей.

Вводный пример Awk

Практические примеры

Список наиболее часто используемых команд

Просмотрите список на основе истории системного терминала, отсортированный от наиболее часто используемого к наименее используемому.

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

пример:

Пример 1: команда Awk

График (таблица) с количеством подключений для каждого хоста

Создайте текстовый граф ASCII, который показывает общее количество подключений от хоста к каждому IP-адресу.

netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'

пример:

Пример 2: команда Awk

Список каталогов по размеру

Распечатайте на экране список каталогов текущего пути от наибольшего до наименьшего с указанием меток, соответствующих их размеру, с использованием букв: g, m и k.

du --max-depth=1 | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'

пример:

Пример 3: команда Awk

Показать трафик из сетевого интерфейса

Просмотр потребления входящих и исходящих данных онлайн в килобайтах (КБ) для указанного сетевого интерфейса.

while [ /bin/true ]; do OLD=$NEW; NEW=`cat /proc/net/dev | grep eth0 | tr -s ' ' | cut -d' ' -f "3 11"`; echo $NEW $OLD | awk '{printf("\rin: % 9.2g\t\tout: % 9.2g", ($1-$3)/1024, ($2-$4)/1024)}'; sleep 1; done

пример:

Получите числовой ряд Фибоначчи

Создайте список количественных чисел X по шаблону Фибоначчи с двумя базовыми числами, которые необходимо построить.

seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'

пример:

Пример 5: команда Awk

Графический листинг файловой структуры по размеру

Получите список всех папок в корне операционной системы вместе с графическим изображением (полосами) и числовым представлением в процентах от их размера в нем.

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');sudo du / --max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++){printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

пример:

Пример 6: команда Awk

Перечислить сводку типов файлов в каталоге

Покажите список типов файлов, содержащихся в каталоге, вместе с количеством файлов, которые ему соответствуют.

find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g

пример:

Пример 8: команда Awk

Эти примеры командных строк, использующих команду awk, я надеюсь, вы найдете их очень полезными. И они служат для использования непосредственно с консоли или косвенно, вставляя их в скрипт (автоматизированная задача).

В следующем посте о сценариях оболочки мы рассмотрим другие команды.

Если вы хотите узнать больше о команде "grep", перейдите по этой ссылке "ДЕБИАН Вики”И если вы хотите узнать больше о сценариях оболочки в нашем блоге, вы можете ознакомиться с другими нашими публикациями по этой теме, нажав здесь: Сценарии DesdeLinux


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Таксито сказал

    Я понял только первый пример, больше ничего