sed

Как заменить несколько строк с помощью команды sed

Как заменить несколько строк с помощью команды sed
Иногда требуется заменить несколько строк файла каким-либо конкретным символом или текстом. В Linux существуют разные команды для замены нескольких строк файла. Команда sed - одна из них для выполнения задач такого типа. Полная форма sed - это редактор Steam, который в основном используется для чтения и преобразования текста различными способами с использованием регулярного выражения. В этом руководстве объясняется, как эту команду можно использовать для замены нескольких строк файла различными способами.

Шпаргалка по типу sed:

Наиболее часто используемые символы, используемые в команде sed, описаны в следующей таблице.

Персонаж Цель
а Он используется для добавления контента.
б Используется для разветвления контента.
c Используется для изменения контента.
d Используется для удаления строки файла.
D Используется для удаления первой строки файла.
грамм Раньше он копировал из удерживаемого текста.
грамм Он используется для добавления из удерживаемого текста.
час Он используется для копирования в удерживающем тексте.
ЧАС Он используется для добавления к удерживаемому тексту.
я Используется для прошивки.
я Используется для печати заменяющей строки.
п Используется для перехода на следующую строку.
N Используется для добавления следующей строки ввода.
п Используется для печати.
п Используется для печати первой строки.
q Используется, чтобы бросить.
Q Используется для немедленного выхода.
р Используется для чтения файла.
р Используется для чтения строки из файла.
s Используется для замены.
т Используется для проверки на замену.
Т Он используется для проверки отсутствия замены.
ш Используется для записи в файл.
W Используется для записи строки в файл.
Икс Он используется для обмена узорами и удержания.
у Он используется для перевода.
z Используется для очистки линии.
знак равно Используется для печати номера строки.

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

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

sed.текст

Полная форма sed - это «редактор потока».

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

Он был разработан Lee E. МакМахон.

Используется для обработки текста.

Поддерживает регулярные выражения.

Пример-1: замена двух последовательных строк

Следующая команда sed заменит две последовательные строки другой строкой. Здесь параметр -z используется для замены последовательных строк нулевыми данными перед добавлением заменяющего текста. Согласно команде, 3rd и 4th строки файла будут заменены на текст, «Это очень полезный инструмент».

$ cat sed.текст
$ sed -z 's / Он был разработан Lee E. МакМахон.\ nОн используется для текста
обработка./ Это очень полезный инструмент./ 'sed.текст

Следующий вывод появится после выполнения команд.

Пример-2: замена нескольких строк на основе совпадения и глобального флага

Следующая команда sed заменит все строки, начинающиеся со слова, 'Это' к слову, 'Эта строка заменена '.

$ cat sed.текст
$ sed 's / ^ Это.* / Эта строка заменена / g 'sed.текст

Следующий вывод появится после выполнения команд. В трех строках содержится слово 'Это'в файле. Итак, эти строки были заменены заменяющим текстом.

Пример-3: замена нескольких строк на основе команды соответствия и следующей строки

Следующая команда 'sed' заменит слово 'являетсяк слову,было'с командой следующей строки' n '.

$ cat sed.текст
$ sed 'n; / is / s / is / was /' sed.текст

Следующий вывод появится после выполнения команд. Здесь, 'является' существует в 2nd и 4th строки файла, и эти строки изменяются словом 'было'.

Замените несколько строк, создав файл сценария sed:

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

студенты.текст

ID: 111045
Имя: Роберт
Отдел: CSE
Партия: 35
ID: 111876
Имя: Джозеф
Отделение: BBA
Партия: 27
ID: 111346
Имя: Уильям
Отдел: CSE
Серия: 45
ID: 111654
Имя: Чарльз
Отдел: EEE
Партия: 41
ID: 111346
Имя: Джон
Отдел: CSE
Партия: 25
ID: 111746
Имя: Томас
Отдел: CSE
Партия: 15

Пример-4: замена нескольких строк файла с помощью файла сценария sed

Создайте файл sed с именем заменять.sed со следующим содержимым для замены нескольких строк на основе шаблона поиска. Здесь слово 'CSE'будет выполняться поиск в текстовом файле, и, если совпадение существует, он снова будет искать числа 35 и 15. Если второе совпадение существует в файле, то оно будет заменено числом 45.

заменять.sed

/ CSE /
п; п;
/ 35 /
s / 35/45 /;
p; d;

/ 15 /
s / 15/55 /;
p; d;


п;

Выполните следующую команду, чтобы проверить существующее содержимое файла. "CSE" появилось в текстовом файле четыре раза. 35 и 15 существуют в двух местах.

$ cat студенты.текст

Следующая команда заменит содержимое нескольких строк на основе сценария sed.

$ sed -n -f заменить.студенты sed.текст

Следующий вывод появится после запуска команды.

Заключение

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

10 лучших игр для Ubuntu
Платформа Windows была одной из доминирующих платформ для игр из-за огромного процента игр, которые разрабатываются сегодня с встроенной поддержкой Wi...
5 лучших аркад для Linux
В настоящее время компьютеры - это серьезные машины, используемые для игр. Если вы не можете получить новый рекорд, вы поймете, о чем я. В этом посте ...
Битва за Веснот 1.13.6 Выпущена разработка
Битва за Веснот 1.13.6, выпущенная в прошлом месяце, является шестой разработкой в ​​1.13.x и содержит ряд улучшений, в первую очередь пользовательско...