Эти 10 примеров Sed сделают вас опытным пользователем Linux

Редактирование текстовых файлов и вывода на терминал – повседневная работа для тех, кто администрирует машины Linux. Утилиты командной строки, такие как sed, позволяют пользователю изменять и изменять содержимое текстового файла прямо из окна терминала.

В этой статье мы подробно обсудим команду sed, а также некоторые важные примеры, демонстрирующие возможности утилиты sed в Linux.

Что такое команда sed?

Команда sed, которая является аббревиатурой от Stream Editor , представляет собой инструмент командной строки, который позволяет пользователям Linux выполнять текстовые операции с файлами и выходными данными терминала. Используя sed, пользователи могут находить и заменять определенные слова в тексте, отображать определенный раздел вывода и редактировать текстовые файлы, не открывая их.

Команда sed поддерживает три основные операции:

  1. Вставка
  2. Удаление
  3. Замена (Найти и заменить)

Опытные пользователи также могут реализовать регулярные выражения с помощью команды sed для более эффективного редактирования текстовых потоков.

Основной синтаксис команды:

 sed [options] [pattern] [filepath]

… где опции различные функциональные команды, шаблон является регулярным выражением или сценарий , который вы хотите , чтобы соответствовать, и путь_к_файлу путь к текстовому файлу , который содержит текст.

10 примеров команды Linux sed

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

Мы будем использовать следующий текстовый файл для демонстрации в посте.

 This is a demo text file.
It is an amazing file that will help us all.
The sed command is also great for stream editing.
Want to learn how to use the command?
This is another line in the file.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is a orange.

1. Просмотр диапазона строк

Команды Linux, такие как head и tail, выводят первые или последние десять строк текстового файла. Но что, если вы хотите поместить содержимое между двумя конкретными строками в файле? В таких ситуациях может пригодиться команда sed.

Чтобы вывести содержимое между строками 3 и 5 файла textfile.txt :

 sed -n '3,5p' textfile.txt

Флаг -n запрещает sed отображать пространство шаблонов в конце каждого цикла. Вы также можете использовать параметры –quiet и –silent вместо -n . Аргумент p означает печать и используется для отображения пользователю совпадающих строк.

Выполнение вышеупомянутой команды в файле примера дает следующий результат.

 The sed command is also great for stream editing.
Want to learn how to use the command?
This is another line in the file.

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

 sed '3,5d' textfile.txt

Флаг d удаляет совпавшие строки из вывода и отображает остальное содержимое.

 This is a demo text file.
It is an amazing file that will help us all.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is a orange.

2. Отображение непоследовательных строк

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

 sed -n -e '1,2p' -e '5,6p' textfile.txt

Выход:

 This is a demo text file.
It is an amazing file that will help us all.
This is another line in the file.
This is the third general line in the file.

Флаг -e помогает выполнять несколько действий с помощью одной команды.

3. Вставьте пробел между строками

Если по какой-либо причине вы хотите вставить пустые строки между каждой строкой в ​​текстовом файле, используйте аргумент G с командой sed по умолчанию.

 sed G textfile.txt

Чтобы вставить в вывод несколько пустых строк, передайте несколько аргументов G, разделенных точкой с запятой ( ; ).

 sed 'G;G' textfile.txt

4. Заменить слово в текстовом файле.

Если вы хотите заменить каждое вхождение определенного слова другим словом, используйте аргументы s и g с командой. Базовый синтаксис для замены слов с помощью команды sed:

 sed s/originalword/replaceword/g filename

Используя вышеупомянутый синтаксис, вы можете заменить слово удивительно на super в файле textfile.txt :

 sed s/amazing/super/g textfile.txt

Аргумент s обозначает замену, а команда g используется для замены совпадающего содержимого указанным замещающим содержимым.

Чтобы заменить второе вхождение слова на sed, передайте число аргументу g . В таком случае:

 sed s/amazing/super/g2 textfile.txt

Если вы хотите игнорировать регистр символов при замене слов, используйте gi вместо g , где i означает игнорировать регистр.

 sed s/Amazing/super/gi textfile.txt

Связанный: Использование Vi? Вот как открыть файл, затем сохранить и выйти

5. Заменить слова внутри диапазона

Вы также можете заменять слова внутри определенного диапазона.

 sed '2,5s/amazing/super/g' textfile.txt

6. Выполните несколько замен одновременно.

Если вы хотите выполнить две или более замены одновременно, просто разделите команды символом точки с запятой ( ; ).

 sed 's/amazing/super/g;s/command/utility/gi' textfile.txt

Система отобразит следующий вывод.

 This is a demo text file.
It is an super file that will help us all.
The sed utility is also great for stream editing.
Want to learn how to use the utility?
This is another line in the file.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is a orange.

7. Заменяйте слова, только если найдено совпадение

Вы также можете использовать команду sed для замены слова, только если в строке найдено заданное совпадение. Например, чтобы заменить слово a на слово , если в строке присутствует слово оранжевый :

 sed -e '/orange/ s/a/an/g' textfile.txt

Выполнение вышеупомянутой команды выведет:

 This is a demo text file.
It is an super file that will help us all.
The sed utility is also great for stream editing.
Want to learn how to use the utility?
This is another line in the file.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is an orange.

Обратите внимание, что слово a в строке This is a apple не было заменено, так как система не нашла в нем слова orange .

8. Замените слова регулярными выражениями.

Для тех, кто знает, как использовать регулярные выражения, выполнение операций со строками с помощью команды sed становится намного проще. Вы можете реализовать регулярные выражения, чтобы расширить возможности команды.

Чтобы заменить все вхождения слова Amazing или amazing на super :

 sed -e 's/[Aa]mazing/super/g' textfile.txt

Точно так же вы также можете использовать расширенные регулярные выражения для выполнения определенных операций с помощью команды sed.

9. Выполните команду sed с другими командами

Вы также можете связать sed с другими командами Linux. Например, вы можете передать команду lspci по конвейеру с sed, чтобы добавить пустые пробелы между строками в выводе.

 lspci | sed G

Чтобы заменить определенные слова в выводе команды ip route show :

 ip route show | sed s/src/source/g

Вышеупомянутая команда заменяет исходное слово вместо исходного слова СРК.

Связанный: Как использовать команду поиска для поиска файлов в Linux

10. Отредактируйте и сделайте резервную копию исходного файла.

Когда вы работаете с системными файлами, важно выполнять резервное копирование исходного файла при внесении изменений. Это поможет вам отменить изменения в случае, если что-то сломается.

Чтобы создать резервную копию исходного файла с помощью sed, используйте в команде флаг -i .

 sed -i'.backup' 's/amazing/super/g' textfile.txt

Будет создан новый файл с именем textfile.txt.backup . Вы можете проверить, что эти два файла разные, используя команду diff .

 diff textfile.txt textfile.txt.backup

Редактирование строк в Linux с помощью sed

Иногда, когда вы работаете с текстовыми файлами на терминале, форматирование и редактирование вывода для лучшей читаемости становится необходимостью. Sed и awk – это утилиты командной строки в Linux, которые позволяют пользователю эффективно работать с текстовыми файлами, разделяя данные на отдельные строки.

Многим пользователям сложно запоминать аргументы и флаги команды sed, так как многие из них доступны для использования. Знание, как получить руководства командной строки для любой команды Linux, поможет вам легко выйти из таких ситуаций.