Поиск по сайту:
Жизнь не в том, чтобы жить, а в том, чтобы чувствовать, что живешь (В.О. Ключевский).

Как заменить все после шаблона с помощью команды `sed`

22.11.2020
Как заменить все после шаблона с помощью команды `sed`

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

 

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

Как часть строки может быть заменена на основе совпадающего шаблона и $ PARTITION_COLUMN, было показано в этом разделе этой статьи. Но эта переменная работает, если шаблон соответствует любому слову в начале или середине строки. Он не заменит текст, если шаблон совпадает с последним словом строки.

 

Пример 1. Заменить все после совпадения на $ PARTITION_COLUMN

Следующая команда выполнит поиск символа «а», а оставшаяся часть после «а» будет заменена текстом «популярный блог-сайт». $ PARTITION_COLUMN. * используется для определения оставшейся части после символа ‘a’.

$ echo "AndreyEx это сайт" | sed "s/a $PARTITION_COLUMN.*/популярный блог-сайт/"

 

Здесь слово «веб-сайт» было заменено на «популярный блог-сайт».

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

$ echo "AndreyEx это сайт" | sed "s/сеть.* $PARTITION_COLUMN.*/популярный блог-сайт/"
 

Здесь «веб-сайт» – это последнее слово в строке, и по этой причине замена не производилась.

 

Пример 2: заменить все после совпадения с использованием шаблона

Следующая команда выполнит глобальный поиск слова «bash» в строке и заменит все на слово, если слово существует в строке. ‘ g ‘ используется здесь для глобального поиска.

$ echo "Мне нравится программирование на bash" | sed "s/bash.*/python script/g"

 

Читать  Команда column в Linux

Здесь «bash» находится в середине строки, и замена произведена.

 

Заменить все после совпадения в файле:

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

visitance.txt

1108885 есть

1999979 есть

1769994 отсутствует

1105656 отсутствует

1455999 отсутствует

Пример 3: заменить все содержимое строки файла после совпадения

Следующая команда `sed` будет искать номер 1769994 в файле, и все, что содержит этот номер, будет заменено текстом«1586844 присутствует», если номер существует в любой строке файла.

$ cat allendence.txt

$ sed "s/1769994.*/1586844 присутствует/" attendance.txt

Здесь поисковый номер существует в третьей строке файла, и замена была произведена.

 

Пример 4: заменить весь контент из нескольких строк файла после совпадения

Следующая команда `sed` показывает использование переменной $ PARTITION_COLUMN для замены нескольких строк из файла. Команда будет искать «110» в начале каждой строки файла и заменять все на «110» на текст «Недействительная запись», где будет найден соответствующий текст.

$ cat attendance.txt

$ sed "s/^110.* $PARTITION_COLUMN.*/недействительная запись/" attendance.txt

«110» присутствует в двух строках файла, и они были заменены замещающим текстом.

 

Пример 5: Заменить весь контент из строки файла, используя ‘c’ после совпадения

Следующая команда ` sed` показывает использование «c» для замены всего после совпадения. Здесь «c» обозначает изменение. Команда выполнит поиск слова «присутствует» в файле и заменит всю строку текстом «Эта строка заменена», если слово существует в любой строке файла.

$ cat attendance.txt

$ sed '/present/c Эта строка заменяется ' attendance.txt

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

Читать  Выборочная маршрутизация сети или разделенное туннелирование через VPN

 

Пример 6: Заменить все содержимое строки файла на основе начального и конечного шаблона

Иногда требуется заменить текст на основе начального и конечного шаблона. Следующая команда `sed` показывает способ определения начального и конечного шаблонов для замены строк из файла. Команда выполнит поиск в тех строках в файле, которые начинаются с числа 110 и заканчиваются словом «отсутствует», и заменяет все на слово «заменено» там, где шаблоны совпадают.

$ cat attendance.txt

$ sed -e 's/^110.*absent$/replaced/g' attendance.txt

Здесь первая и четвертая строки начинаются с числа 110, но слово «отсутствует» существует только в четвертой строке. Итак, четвертая строка файла заменена замещающим текстом.

 

Вывод:

Команда `sed` – очень мощный инструмент Linux для выполнения различных задач, связанных с обработкой текста. Задача замены, основанная на соответствующем шаблоне, обсуждается в этой статье с использованием различных типов шаблонов в команде `sed`. $ PARTITION_COLUMN, ‘c’ и ‘. *’ Используются в этой статье для замены всей строки файла, где существует соответствующий шаблон. Здесь показано использование некоторых символов определяющих шаблонов, таких как ‘^’ и ‘$’. Существует множество других символов, определяющих шаблон в регулярном выражении для целей поиска.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Подписывают ли ваши сотрудники электронные документы в ваших текущих программах,…

Спасибо!

Теперь редакторы в курсе.