1. Блог Админа
  2. >
  3. Компьютерное
  4. >
  5. 20 примеров использования потокового...

20 примеров использования потокового текстового редактора sed

Команда sed (потоковый редактор) это очень мощная утилита работающая в Linux/Unix системах. В основном он используется для поиска и замены текста , но так же может применяться и для других манипуляций, таких как вставкаудаление, поиск и т.п. С sed, вы можете отредактировать файл не выполняя полного его открытия. В sed так же поддерживаются регулярные выражения, которые превращают sed в мощное средство манипуляцией текста.

В этой статье приведу несколько примеров использования SED. Основной синтаксис использования sed:

1. Отобразить часть файла

С помощью sed мы можем просмотреть не весь файл, а только его часть. Посмотреть нужные строки можно так:

Опция n указывает что требуется вывести часть файла, а опция p, что требуется вывести только строки с 22 по 29.

2. Отобразить все кроме указанных строк.

Опция d указывает что надо удалить из вывода строки с 22 по 29.

3. Вывод каждой N строки начиная M строки .

Теперь, например выведем каждую 3-ю строку начиная со строки 2-ой.

4. Удаление строки из файла используя sed.

Где N это номер строки а опция указывает что надо удалить эту строку. Чтобы удалить самую последнюю строку в файле выполните команду:

5. Удаление диапазона строк.

Данная команда удалит строки с 29 по 34 из файла testfile.txt

6. Удаление всех строк кроме указанных.

Чтобы удалить все строки в файле, кроме нужных используйте «!»

Здесь опция «!» означает отрицание, то есть меняет значение на противоположное. Получается что мы НЕ удаляем указанные строки. Поэтому все линии кроме 29-34 будут удалены из файла testfile.txt.

7. Вставка пустой строки/пробелов.

Для добавления пустой строки после каждой НЕ пустой строки используем опцию «G»

8. Поиск и замена строки.

Для поиска и замены найденной строки в файле:

В этом примере мы ищем слово danger и сразу меняем его на слово safety в каждой строке, но только в первом найденном вхождении.

9. Поиск и замена ВСЕХ найденных в файле слов.

Для замены слова полностью во всём файле используем опции «g»  в комбинации с «s»

10. Заменить n-ое вхождение шаблона строки.

Мы также можем заменить строку при n-ом найденном. Например заменим «danger» на «safety» только на второе появление в поиске:

Для замены «danger» на «safety» во втором найденном результате в КАЖДОЙ строке файла:

11. Заменить текст на определенной строке.

Здесь мы явно указали что надо на 4 строке в файле testfile.txt заменить первое найденное слово danger на слово safety. Так же мы можем указать диапазон строк для поиска и последующей замены:

12. Добавить строку до/после совпадения с заданным поиском.

Для добавления новой строки с неким содержимым после каждого найденного совпадения которое мы задали искать используйте опцию «a«:

Для добавления новой строки с неким содержимым перед каждым найденным совпадением которое мы задали искать используйте опцию «i«:

13.Замена всей строки при совпадении поиска.

Чтобы изменить целую строку на новую строку при совпадении шаблона поиска, нам нужно использовать опцию «c«:

Продвинутые опции sed

14. Запуск нескольких команд sed.

Если нам нужно выполнить несколько выражений sed, мы можем использовать опцию «e» для объединения команд sed в цепочку:

15. Создание резервной копии перед изменением файла.

Для создания резервной копии файла перед его изменением используем опцию «-i.bak«:

Этак команда выполнит редактирование файла, но перед этим создаст его копию с расширением  .bak. Вы можете, конечно же, использовать любое другое расширение.

16. Удаление текста начиная с указанного слова и заканчивая другим словом.

Чтобы удалить строку файла, начинающуюся с определенного слова и заканчивая другим словом выполните:

В этом примере danger — слово начиная с которого будет удаляться, stops — где удаление завершится. Выражение «.*» указывает что между этими двумя словами может быть любое количество слов.

17. Добавление строк.

Чтобы добавить контент перед каждой строкой с помощью sed & regex, используйте команду:

Так мы перед каждой строкой добавим текст «testing sed».

18. Удаление всех комментариев и пустых строк.

Для удаления всех закомментированных строк (например начинающихся с #), а так же всех пустых строк выполните:

Для удаления только комментариев:

19. Получение списка пользователей из файла /etc/passwd.

Данная команда выведет на экран список пользовательских имён.

20. Запрет перезаписи системных ссылок с помощью команды sed.

При выполнении команды «sed -i» если вы редактируете не сам файл, а ссылку на него, файл ссылки будет удален и на его месте появится самый обычный файл. Чтобы этого не произошло, вам следует пользоваться опцией «—follow-symlinks»

К примеру мы захотели отключить SELinux  на сервере с CentOS или RHEL:

В этом примере sed проследует по символьной ссылке коей на самом деле является указанный файл «/etc/sysconfig/selinux» и отредактирует тот файл, на который эта ссылка указывает, вместо того чтобы редактировать файл ссылки как настоящий.

 

Автор: Mirivlad

Скромный труженик консоли и окошек.

Комментарии:

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