Как использовать Sed в Linux

Сед означает редактор потока. Это редактор командной строки для 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

? Ваше здоровье!

Категория: Linux