В этом руководстве мы объясним команду Linux SED на реальных примерах. SED (Stream Editor) — одна из наиболее часто используемых команд Linux в скриптах и ​​командных строках. Она ищет, заменяет, вставляет и удаляет строки. Наиболее распространенное применение команды SED — поиск и замена строки в файле без его открытия, что экономит время. Системные администраторы регулярно используют эту команду при написании скриптов и автоматизации задач на сервере.

В следующих параграфах мы научим вас всему, что вам нужно знать о команде SED. Давайте начнем!

Предварительные условия

  • ОС Linux VPS, например Ubuntu, Debian или AlmaLinux
  • Привилегии пользователя: root или non-root пользователь с привилегиями sudo

Синтаксис команды SED

Основной синтаксис команды SED следующий:

1
2
sed [ПАРАМЕТР]… {только-сценарий-если-нет-другого-сценария}
               [входной-файл]…

Создайте txt файл

Сначала один файл; мы будем использовать его для всех примеров в следующих параграфах. Создайте один txt-файл:

1
nano test.txt

Вставьте следующие строки кода:

1
2
3
4
5
6
7
Три, два, один и вот мы начинаем..

Ubuntu это номер один, он быстрый и убивает как пушка, администраторы используют его для развлечения. 

Debian это номер два, и вы его используете, если что-то не так, о чем вы не имеете понятия. 

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

Заменить строку в файле

Этот пример предназначен для замены определенной строки во всем файле .txt. Например, чтобы заменить строку «номер» на слово «цифра», вам нужно выполнить следующую команду:

1
sed 's/номер/цифра/g' test.txt

После выполнения этой команды вы получите следующий вывод:

1
2
3
4
5
6
7
Три, два, один и вот мы начинаем..

Ubuntu это цифра один, быстрая и убойная, как пушка, администраторы используют ее для развлечения. 

Debian это цифра два, и вы ее используете, если что-то не так, о чем вы не имеете понятия. 

AlmaLinux это цифра три, которая должна быть, вы никогда не сможете ее использовать, если у вас нет степени администратора Linux.

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

Чтобы заменить строку «это» в третьей строке на «был», выполните следующую команду:

1
sed '3 s/это/был/' test.txt

Вы должны получить следующий результат:

1
2
3
4
5
6
7
Три, два, один и вот мы начинаем..

Ubuntu был номером один, он быстрый и убивает как пушка, администраторы используют его для развлечения. 

Debian номер два, и вы его используете, если что-то не так, о чем вы не имеете понятия. 

AlmaLinux номер три, который должен быть, вы никогда не сможете его использовать, если у вас нет степени администратора Linux.

Заменить определенное вхождение в строке файла

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

1
sed 's/это/был/2' test.txt

Вы заметите, что во второй и третьей строках слово «это» во втором случае заменено на «был».

1
2
3
4
5
6
7
Три, два, один и вот мы начинаем..

Ubuntu номер один, был быстрым и убивает как пушка, администраторы используют его для развлечения. 

Debian номер два, и был использован вами, если что-то не так, вы не имеете понятия. 

AlmaLinux номер три, который должен быть, вы никогда не сможете его использовать, если у вас нет степени администратора Linux.

Печатать только строки с замененным текстом

Как видите, выводом стал весь текст после изменения. Если мы хотим увидеть только измененные строки, нам нужно использовать следующую команду:

1
sed -n 's/это/был/2p' test.txt

Вы должны увидеть только строки с изменениями:

1
2
3
Ubuntu номер один, он быстрый и убивает как пушка, администраторы используют его для развлечения.

Debian номер два, и был использован вами, если что-то не так, вы не имеете понятия.

Заменить строку с Ignore Case

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

1
sed -n 's/два/серебра/ip' test.txt

Вы должны получить только измененные строки:

1
2
3
Три серебра, один и вот мы начинаем..

Debian это номер серебра и используется вами, если что-то не так, вы не имеете понятия.

О команде SED

Если вы хотите узнать подробности о команде SED, вы можете выполнить команду ниже:

1
man sed

Вы получите полное объяснение команды, опций, синопсис и т.д.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
NAME
       sed - stream editor for filtering and transforming text

SYNOPSIS
       sed [-V] [--version] [--help] [-n] [--quiet] [--silent]
           [-l N] [--line-length=N] [-u] [--unbuffered]
           [-E] [-r] [--regexp-extended]
           [-e script] [--expression=script]
           [-f script-file] [--file=script-file]
           [script-if-no-other-script]
           [file...]

Вот и все. Вы узнали несколько основных и важных команд SED в ОС Linux.

Если вам понравился этот пост о команде SED, поделитесь им с друзьями или оставьте комментарий ниже.