Как заменить все после шаблона с помощью команды `sed`
Задачи замены можно выполнять в Linux по-разному. Команда `sed` — один из способов выполнить задачу замены. Эту команду можно использовать для замены текста в строке или файле другим шаблоном. Как вы можете заменить все после сопоставления шаблона с помощью команды `sed`, показано в этом руководстве.
Заменить все после совпадения в строке:
Как можно заменить часть строки на основе совпадающего шаблона и $PARTITION_COLUMN, было показано в этом разделе этого руководства. Но эта переменная работает, если шаблон соответствует любому слову в начале или середине строки. Он не заменит текст, если шаблон совпадает с последним словом строки.
Пример 1: заменить все после совпадения, используя $PARTITION_COLUMN
Следующая команда будет искать символ «а», а оставшаяся часть после «а» будет заменена текстом «популярный блог-сайт». $PARTITION_COLUMN.* используется для определения оставшейся части после символа «а».
Следующий вывод появится после запуска команды. Здесь «веб-сайт» заменен на «популярный блог-сайт».
Следующий шаблон ищет слово «веб-сайт» в строке и заменяет оставшуюся часть на «веб-сайт» по тексту «популярный блог-сайт<', если совпадение существует и 'web' не является частью последнего слова строки.
Следующий вывод появится после запуска команды. Здесь «веб-сайт» — это последнее слово строки, и по этой причине замена не производилась.
Пример 2: заменить все после совпадения с помощью шаблона
Следующая команда выполнит глобальный поиск слова «bash» в строке и заменит все словом, если оно существует в строке. ‘g’ используется здесь для глобального поиска.
Следующий вывод появится после запуска команды. Здесь в середине строки стоит «bash», и замена выполнена.
Заменить все после совпадения в файле:
Все содержимое определенной строки или нескольких строк или оставшихся строк файла после совпадения можно заменить с помощью команды `sed`. Создайте текстовый файл с именем attendance.txt со следующим содержимым, чтобы протестировать примеры, показанные в этом разделе.
посещаемость.txt
1999979 is present
1769994 is absent
1105656 is absent
1455999 is absent
Пример -3: заменить все содержимое строки файла после совпадения
Следующая команда `sed` будет искать число 1769994 в файле, и все с числом будет заменено текстом «1586844 присутствует», если число существует в любой строке файла.
$ sed "s/1769994.*/1586844 is present/" attendance.txt
При выполнении команд появится следующий вывод. Здесь искомый номер существует в третьей строке файла, и замена произведена.
Пример 4: Замена всего содержимого из нескольких строк файла после совпадения
Следующая команда `sed` показывает использование переменной $PARTITION_COLUMN для замены нескольких строк из файла. Команда будет искать «110» в начале каждой строки файла и заменит все на «110» текстом «Недопустимая запись», где будет найден соответствующий текст.
$ sed "s/^110.* $PARTITION_COLUMN.*/Invalid Entry/" attendance.txt
Пример 5: заменить все содержимое строки файла с помощью «c» после совпадения
Следующая команда `sed` показывает использование ‘c’ для замены всего после совпадения. Здесь «c» указывает на изменение. Команда выполнит поиск слова 'присутствует' в файле и заменит всю строку текстом "Эта строка заменена", если это слово существует в любой строке файла. файл.
$ sed '/present/c This line is replaced ' attendance.txt
После выполнения команд появится следующий вывод. Слово «присутствует» присутствует в первых двух строках файла, и эти две строки были заменены замещающим текстом.
Пример 6: Замена всего содержимого строки файла на основе начального и конечного шаблона
Иногда требуется заменить текст на основе начального и конечного шаблона. Следующая команда `sed` показывает, как определить начальный и конечный шаблоны для замены строк из файла. Команда будет искать в файле те строки, которые начинаются с цифры 110 и заканчиваются словом «отсутствует», и заменяет все на слово «заменено», где шаблоны совпадают.
$ sed -e 's/^110.*absent$/replaced/g' attendance.txt
После выполнения команд появится следующий вывод. Здесь первая и четвертая строки начинаются с числа 110, но слово «отсутствует» существует только в четвертой строке. Итак, четвертая строка файла заменена замещающим текстом.
Заключение:
Команда `sed` — очень мощный инструмент Linux для выполнения различных задач, связанных с обработкой текста. В этом руководстве обсуждается задача замены на основе совпадающего шаблона с использованием различных типов шаблонов в команде `sed`. $PARTITION_COLUMN, ‘c’ и ‘.*’ используются в этом руководстве для замены всей строки файла, в которой существует соответствующий шаблон. Здесь показано использование некоторых символов определяющих шаблонов, таких как «^» и «$». Существует множество других символов для определения шаблона в регулярном выражении для целей поиска. Я надеюсь, что этот урок поможет читателю узнать основы замены всего из файла после матча.