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
Встроенную справку можно получить командой:
man sed