Поиск по сайту:

Как заменить несколько строк с помощью команды `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 строки файла будут заменены текстом 'Это очень полезный инструмент' .

$ cat sed.txt
$ 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", на слово "Эта строка заменена ".

$ cat sed.txt
$ sed 's/^It.*/This line is replaced/g' sed.txt

После выполнения команд появится следующий вывод. Три строки содержат слово «It» в файле. Итак, эти строки были заменены замещающим текстом.

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

Следующая команда sed заменит слово «is» словом «was» с командой следующей строки «n».

$ cat sed.txt
$ sed ' {n;/is/ {s/is/was/}}' sed.txt

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

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

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

students.txt

ID: 111045
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

/CSE/ {
    p;n;
    /35/ {
        s/35/45/;
        p;d;
          }
    /15/ {
        s/15/55/;
        p;d;
          }
}
p;

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

$ cat students.txt

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

$ sed -n -f replace.sed students.txt

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

Заключение

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

Статьи по данной тематике: