Grep, Адмінчег

Posted on Листопад 6, 2013

Ключі

grep -oe

-E, —extended-regexp PATTERN — інтерпретувати PATTERN як розширений регулярний вираз

-o, -only-matching - виводить тільки те, що відповідає регулярному виразу

Приклади:

є файл з налаштуваннями DHCP у вигляді: host h1 hardwareethernet 00:40: d1: 64: ee: 80; fixed-address 10.167.13.121; > …. host h1000 hardwareethernet 00:13:77:3d:46:6f; fixed-address 10.167.12.104; >Йому треба було привести його до вигляду:

grep -E -o '[0-9,aAbBcCdDeEfF](\:[0-9,aAbBcCdDeEfF;])'

cat /etc/dhcp3/dhcpd.conf grep -E -o ‘[0-9,aAbBcCdDeEfF](\:[0-9,aAbBcCdDeEfF;])’

Для пошуку IP регулярне вираз аналогічне - [0-9] (\. [0-9,;]). Думаю, чому воно таке, зрозуміло.

for i in $(cat /etc/dhcp3/dhcpd.conf grep -E -o $mac) do echo $i > mac done

Тепер готуємо дані у потрібному форматі для конфігу DHCP:

c=1d=1

hn="host h"fa=" fixed-address "hd=»< hardware ethernet "cl=" >"

for i in $(cat mac)dod=1for j in $(cat ip)do

if test $c = $dthenecho $hn$c$hd$i$fa$j$cl>dhcpd.conffi

d=$((d+1))done

c=$((c+1))done

виведе рядки, в яких знайдено відповідність, плюс 2 рядки до 2 після кожного знайденого.

grep -C 2 pattern files

У grep символ "*" має дещо інше значення. У grep цей символ необхідно групувати з іншими. Наприклад, якщо вам потрібен той самий ефект, як і в оболонці, використовуйте таке:

grep ‘.*’ pattern files

Символ«^» відповідає початку рядка, а символ«$» - її кінця.

grep інтерпретувала спецсивмолы як звичайні - попередьте їх зворотним слішем.

grep '\*' filename

буде шукати рядки, що містять символ зірочки в filename.

Зверніть увагу на подвійні дужки.

grep '[[:punct:]]$' files

У виразах можна використовувати діапазони та класи символів. Для цього при складанні шаблону grep використовуються квадратні дужки. Наприклад, символу в діапазоні від A до Z буде відповідати шаблон [A-Z]», а будь-якій цифрі - [0-9]»». Також, використовуючи квадратні дужки, ви можете визначати відповідність класам символів. Наприклад, [:punct:]»» буде відповідати будь-якому розділовому знаку.