Инструменты пользователя

Инструменты сайта


sed

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

sed [2018/12/30 02:44] (текущий)
Строка 1: Строка 1:
 +====== Редактор sed ======
 +{{htmlmetatags>​
 +metatag-description=(Утилита sed - инструмент для обработки строковых данных в Linux.)
 +}}
  
 +
 +{{ ::​sed_redaktor_01.jpg?​nolink |}}
 +  * [[RegExp]]
 +  * [[utility_os_nix#​tekstovye_redaktory_processory|Текстовые редакторы (процессоры)]]
 +
 +**sed** (Stream EDitor) - потоковый неинтерактивный текстовый редактор (а также язык программирования),​ применяющий различные предопределённые текстовые преобразования к последовательному потоку текстовых данных.
 +
 +sed получает входной поток (обычно файл) построчно,​ редактирует каждую строку согласно правилам,​ определённым в sed- скрипте с использованием простого языка sed, и затем выводит результат в выходной поток. sed отличается от обычных текстовых редакторов "​инвертированностью"​ по отношению к тексту и набору команд редактирования. Обычные текстовые редакторы вначале загружают весь текст документа,​ а затем применяют к нему команды по одной, в то время как sed вначале загружает в себя набор команд,​ а затем применяет весь набор команд к каждой строчке текста. Так как одновременно в памяти находится только одна строка,​ sed может обработать произвольно большие текстовые файлы.
 +
 +**Модификаторы**:​
 +  * **g**. sed по умолчанию заменяет только первое найденное слово. Модификатор g указывает заменять все найденные совпадения в строке.
 +  * **i**. Установить регистронезависимый режим.
 +
 +===== Примеры использования редактора sed =====
 +
 +  * Вывести третью строку из файла .bash_history<​file>​
 +sed -ne 3p .bash_history
 +OR
 +sed -n '​3p;​3q'​ .bash_history
 +</​file>​
 +  * sed '​s/​stringa1/​stringa2/​g'​ example.txt в файле example.txt заменить "​string1"​ на "​string2",​ результат вывести на стандартное устройство вывода. Например<​file>​
 +cat lost_cdr.sql | sed '​s/​DEFAULT,​ 2/DEFAULT, 1/g' > lost_cdr_nas1.sql
 +</​file>​
 +  * sed '/​^$/​d'​ example.txt удалить пустые строки из файла example.txt
 +  * sed '/ *#/d; /^$/d' example.txt удалить пустые строки и комментарии из файла example.txt
 +  * sed -e '​1d'​ result.txt удалить первую строку из файла example.txt
 +  * sed -n '/​string1/​p'​ отобразить только строки содержашие "​string1"​
 +  * sed -e 's/ *$//' example.txt удалить пустые символы в в конце каждой строки
 +  * sed -e '​s/​string1//​g'​ example.txt удалить строку "​string1"​ из текста не изменяя всего остального
 +  * sed -n '​1,​8p;​5q'​ example.txt взять из файла с первой по восьмую строки и из них вывести первые пять
 +  * sed -e '​s/​0*/​0/​g'​ example.txt заменить последовательность из любого количества нулей одним нулём
 +  * Замена при помощи переменных:<​file bash>
 +export OLD_IP=12.1.1.1
 +export NEW_IP=122.33.44.55
 +sed -i "​s/​$OLD_IP/​$NEW_IP/"​ /​etc/​nginx/​nginx.conf
 +</​file>​
 +
 +===== Пример:​ вырезать кусок текста из лог- файла =====
 +Вырезать кусок текста из лог- файла. Лог имеет метки времени. Зная метку начала и конца нужного нам куска лога, мы можем при помощи утилиты [[grep]] найти номера строк начала и конца. И при помощи sed вырезать нужный нам кусок лога.
 +<file bash cutlog.sh>​
 +#!/bin/sh
 +
 +FILE="​path to file"
 +START=`grep -n '​2014-11-29 04:​51:​23.253790'​ "​$FILE"​ | cut -f1 -d:`
 +END=`grep -n '​2014-11-29 04:​51:​23.255933'​ "​$FILE"​ | cut -f1 -d:`
 +
 +sed -n "​$START,​$END p" $FILE
 +</​file>​
загрузка...
sed.txt · Последние изменения: 2018/12/30 02:44 (внешнее изменение)