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

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


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

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

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

Пример 1: заменить все после совпадения, используя $PARTITION_COLUMN

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

$ echo "LinuxHint is a website" | sed "s/a $PARTITION_COLUMN.*/a popular blog site/"

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

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

$ echo "LinuxHint is a website" | sed "s/web.* $PARTITION_COLUMN.*/a popular blog site/"

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

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

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

$ echo "I like bash programming" | sed "s/bash.*/python script/g"

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

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

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

посещаемость.txt

1108885 is present

1999979 is present

1769994 is absent

1105656 is absent

1455999 is absent

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

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

$ cat allendence.txt

$ sed "s/1769994.*/1586844 is present/" attendance.txt

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

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

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

$ cat attendance.txt

$ sed "s/^110.* $PARTITION_COLUMN.*/Invalid Entry/" attendance.txt

Пример 5: заменить все содержимое строки файла с помощью «c» после совпадения

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

$ cat attendance.txt

$ sed '/present/c This line is replaced ' attendance.txt

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

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

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

$ cat attendance.txt

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

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

Заключение:

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

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