Поиск по сайту:

Как читать ввод Awk из STDIN в Linux. Часть 7


В предыдущих частях серии инструментов Awk мы рассматривали чтение входных данных в основном из файлов, но что, если вы хотите прочитать входные данные из STDIN?

В этой части 7 серии статей по Awk мы рассмотрим несколько примеров, где вы можете фильтровать вывод других команд вместо чтения входных данных из файла.

Мы начнем с утилиты dir, которая работает аналогично команде ls. В первом примере ниже мы используем выходные данные команды dir -l в качестве входных данных для Awk для вывода имени пользователя владельца, имени группы и файлов, которые он /ей принадлежит в текущем каталоге:

dir -l | awk '{print $3, $4, $9;}'

Взгляните на другой пример, где мы используем выражения awk. Здесь мы хотим напечатать файлы, принадлежащие пользователю root, используя выражение для фильтрации строк, как в команде awk ниже:

dir -l | awk '$3=="root" {print $1,$3,$4, $9;} '

Приведенная выше команда включает оператор сравнения (==), который помогает нам отфильтровать файлы в текущем каталоге, принадлежащие пользователю root. Это достигается с помощью выражения $3== ”root”.

Давайте посмотрим на другой пример использования оператора сравнения awk для сопоставления определенной строки.

Здесь мы использовали утилиту cat для просмотра содержимого файла с именем tecmint_deals.txt и хотим просматривать только сделки типа Tech, поэтому запустим следующие команды:

cat tecmint_deals.txt
cat tecmint_deals.txt | awk '$4 ~ /tech/{print}'
cat tecmint_deals.txt | awk '$4 ~ /Tech/{print}'

В приведенном выше примере мы использовали оператор сравнения value ~ /pattern/, но есть две команды, которые позволяют попытаться выявить что-то очень важное.

Когда вы запускаете команду с шаблоном tech, ничего не выводится, поскольку сделки такого типа нет, но с Tech вы получаете сделки введите Технология.

Поэтому всегда будьте осторожны при использовании этого оператора сравнения, как мы видели выше, он чувствителен к регистру.

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

Надеюсь, примеры были достаточно ясными для вашего понимания. Если у вас есть какие-либо вопросы, вы можете выразить их в разделе комментариев ниже и не забудьте проверить следующую часть серии, где мы рассмотрим функции awk. такие как переменные, числовые выражения и операторы присваивания.