Сед
означает редактор потока. Это редактор командной строки для Linux. Популярно использование sed для редактирования файлов как части сценария автоматизации в Linux, поскольку обычные редакторы требуют активного ввода данных пользователем и не могут редактировать файлы за пределами экранов редактора. Sed чаще всего используется для поиска и замены из командной строки.
Этот тип текстового редактора также можно отнести к категории неинтерактивных текстовых редакторов.
Давайте посмотрим на некоторые распространенные варианты редактирования файлов с помощью Sed. В качестве примера возьмем следующий файл:
$: cat test.txt Быстрая коричневая собака перепрыгнула через ленивого кота. Операционная система Linux. В лесу рядом с моим домом есть и кошка, и волки.
Искать и заменить
Чтобы найти строку в файле и заменить ее другой строкой, выполните:
sed -i "s / cat / fox / g" test.txt
Здесь -я
flag указывает sed записать изменения в файл. Без этого флага sed
просто отобразит файл с измененной строкой.
В кавычках мы имеем с / кот / лиса / г
. В s
для команды поиска и замены sed
. Затем у нас есть строка для поиска, которая Кот
. Затем строка, на которую его нужно заменить, т. Е. лиса
. Наконец, у нас есть необязательный г
, который инструктирует sed
заменить все вхождения во всех строках файла. Без г
, sed заменит только первое вхождение Кот
на каждой строке.
Здесь также можно использовать регулярное выражение.
sed -i "s / f [a-z] * \ ./ cat \ ./ g"
Вставлять
Чтобы вставить текст перед строкой с совпадающей строкой, используйте:
sed -i "/ cat / i Начало:" test.txt
Здесь, Кот
это искомая строка и Начинать:
- это строка, которую нужно ввести перед строкой, в которой найдена искомая строка.
Точно так же, чтобы вставить текст после строки, используйте:
sed -i "/ fox / a End." test.txt
Удалить
Чтобы удалить строку, содержащую подстроку, используйте:
sed -i "/ Linux / d" test.txt
Чтобы удалить строку с номером строки, например. в первой строке используйте:
sed -i '1d' test.txt
Объединение нескольких функций
Чтобы объединить несколько функций, например. поиск и замена, удаление одной командой, -e
флаг может быть использован.
sed -i -e "s / fox / cat / g" -e '2d' test.txt
? Ваше здоровье!