Использование SED (Stream EDitor)

SED (Stream EDitor) — потоковый текстовый редактор и язык программирования.
Отличный инструмент чтобы преобразовать выходящие текстовые данные в любой удобный вид.

К примеру несколько раз писал таблицу мак-адресов онлайн, которые брались с коммутатора, сверялись с биллингом и выводились уже с такими данными как адрес, ID, логин и т.д..
Вот например скрипт который получает по SNMP мак-адреса с L3 коммутатора HP 5800 и сохраняет их в текстовый документ в столбик, благодаря SED удаляются ненужные данные, а пробелы заменяются на двоеточие:

#!/bin/bash
rm /var/www/mac.txt
snmpwalk -v 2c -c community 192.168.1.50 .1.3.6.1.2.1.17.4.3 -O v|sed -e "s/.*Hex-STRING: //g" -e "s/ /:/g" -e "s/.$//" -e "/INTEGER/d" > /var/www/mac.txt

Приведу ещё несколько примеров использования SED.
Вывести только значения после Hex-STRING:

sed -e 's/.*Hex-STRING: //g'

Замена пробелов на двоеточия:

sed -e 's/ /:/g'

Удаление последней строки:

sed -e sed 's/.$//'

Удаление последнего символа:

sed -e 's/.$//'

Удаление строки содержащей INTEGER:

sed -e '/INTEGER/d'

Удаление строк в файле file.txt в которых встречается ABCD:

sed -i '/^ABCD/ d' file.txt

Пример удаления в файле file.txt третей строки и удаление 4 строк начиная от 7 строки:

sed -i '3,1d' file.txt
sed -i '7,4d' file.txt

Пронумеровать строки в файле file.txt:

sed = file.txt | sed 'N;s/\n/\t/'

Вывод только строк с 5-10:

sed -n 5,10p file.txt

Встроенную справку в Ubuntu можно получить командой:

man sed

Добавить комментарий