grep, awk, sed, cut и cat. Примеры использования

Такие инструменты как grep, awk, sed, cut, cat могут существенно облегчить вам жизнь, если уметь ими пользоваться. Они помогут вам сократить ваши ежедневные усилия по администрированию системы и очень понадобятся при написании ваших скриптов для автоматизации процессов. В этой статье не будут рассмотрены все возможности этих мощных утилит. Мы просто рассмотрим возможности этих программ и слегка коснемся их использования.

Самой простой и наиболее часто используемой командой можно назвать cat.

ifreebsd#/var/log>cat /etc/hosts

Это команда выводит на экран данные из файла, с ее помощью легко просматривать файлы. Но если мы к примеру возьмемся просматривать файл отчетов системы /var/log/messages.

ifreebsd#/var/log>cat /var/log/messages

Мы обнаружим большое количество строк не очень удобно рассматривать все и сразу, и тут нам на помощь приходит другой инструмент практически любой UNIX-like системы, это – grep. Вот таким способом можно указать за какое время данные нас интересуют указываем 27 Oct с 13 – 14 часов

ifreebsd#/var/log>cat ./messages | grep “Oct 27 13″

На экране будут выведены только данные за этот период. cat и grep я использую каждый день, надеюсь и вам они будут полезны.

Перейдем к cut, рассмотрим реальный пример, нам необходимо из файла /etc/passwd получить только имена пользователей, тогда нам подойдет следующая конструкция.

ifreebsd:~/IF>cut -d : -f1 /etc/passwd

Результат будет следующим

root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy

Разберем эту конструкцию по подробней cut -d : -f1 /etc/passwd
-d это указание на разделение по символу :
далее -f1 инструкция какое именно поле нужно вывести на экран – мы указываем первое. Также можно использовать флажок -с и указать количество символов которое вам необходимо вывести на экран. Вот еще один пример использования cut, тут мы разделителем указываем пробел между словами.

ifreesbsd:~/IF>uname -a | cut –delimiter=’ ‘ -f 1,7,8

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

А мы идем дальше, рассмотрим sed. SED – это так называемый потоковый редактор. Он редактирует сроки получая данные или с стандартного ввода или из файла, отлично подходит для работы в конвейере. Для того чтобы осознать все мощь редактора sed необходимо изучать регулярные выражения которые в нем используются, мы же лишь слегка рассмотрим примеры его использования. К примеру эта конструкция прочитает указанный файл и заменит все адреса 192.168.1.222 которые встретит на адрес 192.168.1.101 и выведет эту информация на экран (не переписывая искомый файл).

ifreebsd:~/IF>sed -e “s/192.168.1.222/192.168.1.101/g” /etc/network/interfaces

Эта команда посчитает все строки в искомом файле и выведет на экран количество строк.

ifreebsd:~/IF>sed -n ‘$=’ /etc/passwd

Вот эта конструкция пронумерует все строки и выведет на экран.

ifreebsd:~/IF>sed ‘/./=’ /etc/passwd | sed ‘/./N; s/n/ /’

Выглядеть это будет вот так :
1
root:x:0:0:root:/root:/bin/bash
2
daemo :x:1:1:daemon:/usr/sbin:/bin/sh
3
bi :x:2:2:bin:/bin:/bin/sh
4
sys:x:3:3:sys:/dev:/bi /sh
5
sy c:x:4:65534:sync:/bin:/bin/sync
6

Поверьте sed очень мощный редактор, ему следует уделить не мало времени.

А мы продолжаем наш обзор и переходим к awk. Про Awk вполне можно писать книгу и не одну. На самом деле это не просто команда, это скриптовой язык программирования. Рассмотрим примеры использования awk.

Эта инструкция выводит только те строки в которых обнаружено искомое слово root.

ifreebsd:~/IF>awk ‘/root/ {print}’ /etc/passwd

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

ifreebsd:~/IF>awk ‘{a = $1; print a}’ /etc/hosts

Следовательно на экран будет выведено только первое поле, выводить можно по несколько полей, самый простой способ сохранить эту информацию в новый файл, это воспользоваться такой конструкцией:

ifreebsd:~/IF>awk ‘{a = $1; print a}’ /etc/hosts > host.info

Перенаправление > создает файл host.info и сохраняет в него данные которые поступили из awk. AWK также как и sed работает с регулярными выражением, и он более универсален чем sed.

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

Удачи.

http://ifreebsd.org/other/grep-awk-sed-cut-и-cat-примеры-использования/

Обновлено: 12.03.2015