Как заменить несколько строк с помощью команды `sed`
Иногда требуется заменить несколько строк файла каким-либо конкретным символом или текстом. В Linux существуют разные команды для замены нескольких строк файла. Команда `sed` — одна из них для выполнения задач такого типа. Полная форма `sed` — это редактор Steam, и он в основном используется для чтения и преобразования текста различными способами с использованием регулярных выражений. В этом руководстве объясняется, как эту команду можно использовать для замены нескольких строк файла различными способами.
Обычно используемая шпаргалка `sed`:
Наиболее часто используемые символы, используемые в команде `sed`, объясняются в следующей таблице.
- a
Он используется для добавления содержимого.
- b
Он используется для ветвления контента.
- c
Используется для изменения контента.
- d
-
Используется для удаления строки файла.
- D
Используется для удаления первой строки файла.
- g
Используется для копирования из удерживающего текста.
- G
Он используется для добавления из удерживающего текста.
- h
Используется для копирования удерживаемого текста.
- H
Он используется для добавления к удерживающему тексту.
- i
Используется для вставки.
- I
Он используется для печати заменяющей строки.
- n
Используется для перехода на следующую строку.
- N
Он используется для добавления следующей строки ввода.
- p
-
Используется для печати.
- P
Используется для печати первой строки.
- q
Используется для отказа.
- Q
Используется для немедленного выхода.
- r
Он используется для чтения файла.
- R
Используется для чтения строки из файла.
- s
Используется для замены.
- t
Он используется для проверки замены.
- T
Он используется для проверки отсутствия замещения.
- w
Используется для записи в файл.
- W
-
Используется для записи строки в файл.
- x
Он используется для смены шаблонов и удержания.
- y
Он используется для перевода.
- z
Используется для очистки линии.
- ‘=’
Используется для печати номера строки.
Замените несколько строк с помощью команды `sed` из терминала:
Как можно использовать команду `sed` для замены нескольких строк из файла с терминала, показано в этой части этого руководства. Создайте файл с именем sed.txt со следующим содержимым, проверьте команды этой части.
sed.txt
Полная форма sed — «редактор потока».
Это утилита Unix, которая используется для чтения и преобразования текста в другой формат.
Он был разработан Ли Э. МакМахоном.
Используется для обработки текста.
Он поддерживает регулярные выражения.
Пример 1: заменить две последовательные строки
Следующая команда `sed` заменит две последовательные строки другой строкой. Здесь параметр -z используется для замены последовательных строк нулевыми данными перед добавлением заменяющего текста. Согласно команде, 3rd и 4th строки файла будут заменены текстом 'Это очень полезный инструмент' .
$ sed -z 's/It was developed by Lee E. McMahon.\nIt is used for text
processing./It is a very useful tool./' sed.txt
После выполнения команд появится следующий вывод.
Пример 2: замена нескольких строк на основе совпадения и глобального флага
Следующая команда `sed` заменит все строки, начинающиеся со слова "It", на слово "Эта строка заменена ".
$ sed 's/^It.*/This line is replaced/g' sed.txt
После выполнения команд появится следующий вывод. Три строки содержат слово «It» в файле. Итак, эти строки были заменены замещающим текстом.
Пример 3: замена нескольких строк на основе совпадения и команды следующей строки
Следующая команда sed заменит слово «is» словом «was» с командой следующей строки «n».
$ sed ' {n;/is/ {s/is/was/}}' sed.txt
После выполнения команд появится следующий вывод. Здесь 'is' существует во 2й и 4й строках файла, и эти строки изменены словом 'было'.
Замените несколько строк, создав файл сценария `sed`:
В предыдущих примерах команды `sed` выполнялись с терминала. Но это скриптовый язык, и если скрипт содержит несколько операторов, то лучше создать sed-файл со скриптом. Создайте текстовый файл с именем students.txt со следующим содержимым, в котором будет применяться сценарий `sed`.
students.txt
Name: Robert
Department: CSE
Batch: 35
ID: 111876
Name: Joseph
Department: BBA
Batch: 27
ID: 111346
Name: William
Department: CSE
Batch: 45
ID: 111654
Name: Charles
Department: EEE
Batch: 41
ID: 111346
Name: John
Department: CSE
Batch: 25
ID: 111746
Name: Thomas
Department: CSE
Batch: 15
Пример 4: Замена нескольких строк файла с помощью файла сценария `sed`
Создайте файл sed с именем replace.sed со следующим содержимым, чтобы заменить несколько строк на основе шаблона поиска. Здесь слово 'CSE' будет искаться в текстовом файле, и если совпадение существует, то снова будут искать числа 35 и 15. Если второе совпадение существует в файле, то оно будет заменен на число 45.
заменить.sed
p;n;
/35/ {
s/35/45/;
p;d;
}
/15/ {
s/15/55/;
p;d;
}
}
p;
Выполните следующую команду, чтобы проверить существующее содержимое файла. «CSE» встречается в текстовом файле четыре раза. 35 и 15 существуют в двух местах.
Следующая команда заменит содержимое нескольких строк на основе сценария sed.
Следующий вывод появится после запуска команды.
Заключение
В этом руководстве показаны различные способы замены нескольких строк или содержимого нескольких строк с помощью команды `sed`. Как запустить скрипт `sed` из sed-файла, также показано в этом руководстве. Я надеюсь, что это руководство поможет читателю заменить несколько строк в любом файле с помощью команды `sed`.