Задачи замены можно выполнять в Linux по-разному. Команда 'sed' - один из способов выполнить задачу замены. Эту команду можно использовать для замены текста в строке или файле с помощью другого шаблона. В этом руководстве показано, как вы можете заменить все после совпадающего шаблона с помощью команды sed.
Заменить все после совпадения в строке:
Как часть строки может быть заменена на основе совпадающего шаблона и $ PARTITION_COLUMN, было показано в этом разделе этого руководства. Но эта переменная работает, если шаблон соответствует любому слову в начале или середине строки. Он не заменит текст, если шаблон совпадает с последним словом строки.
Пример 1. Заменить все после совпадения на $ PARTITION_COLUMN
Следующая команда выполнит поиск символа «а», а оставшаяся часть после «а» будет заменена текстом «популярный блог-сайт». $ PARTITION_COLUMN.* используется для определения оставшейся части после символа 'a'.
$ echo "LinuxHint - это веб-сайт" | sed "s / a $ PARTITION_COLUMN.* / популярный блог-сайт / "Следующий вывод появится после запуска команды. Здесь слово «веб-сайт» было заменено на «популярный блог-сайт».
Следующий шаблон будет искать слово 'сеть'В строке и замените оставшуюся часть на'сеть'По тексту,'популярный блог-сайт'если совпадение существует и'сеть'Не является частью последнего слова строки.
Следующий вывод появится после запуска команды. Здесь «веб-сайт» - это последнее слово в строке, и по этой причине замена не производилась.
Пример-2: Заменить все после совпадения с использованием шаблона
Следующая команда будет искать слово 'трепать'глобально в строке и замените все словом, если слово существует в строке. 'грамм'Используется здесь для глобального поиска.
$ echo "Мне нравится программировать на bash" | sed "s / bash.* / скрипт Python / g "Следующий вывод появится после запуска команды. Здесь 'bash' находится в середине строки, и замена была произведена.
Заменить все после совпадения в файле:
Все содержимое определенной строки или нескольких строк или оставшихся строк файла после совпадения можно заменить с помощью символа 'sedкоманда. Создайте текстовый файл с именем посещаемость.текст со следующим содержанием для проверки примеров, показанных в этом разделе.
посещаемость.текст
1108885 присутствует1999979 присутствует
1769994 отсутствует
1105656 отсутствует
1455999 отсутствует
Пример -3: заменить все содержимое строки файла после совпадения
Следующая команда 'sed' будет искать номер 1769994 в файле, и все, что содержит номер, будет заменено текстом '1586844 присутствует', если номер существует в любой строке файла.
$ cat allendence.текст$ sed "s / 1769994.* / 1586844 присутствует / "посещаемость.текст
Следующий вывод появится при выполнении команд. Здесь поисковый номер существует в третьей строке файла, и замена была произведена.
Пример -4: Заменить весь контент из нескольких строк файла после совпадения
Следующая команда sed показывает использование переменной $ PARTITION_COLUMN для замены нескольких строк из файла. Команда будет искать «110» в начале каждой строки файла и заменять все на «110» на текст «Недействительная запись», где будет найден соответствующий текст.
$ cat посещаемость.текст$ sed "s / ^ 110.* $ PARTITION_COLUMN.* / Invalid Entry / "посещаемость".текст
Следующий вывод появится после выполнения команд. '110' существует в двух строках файла, и они были заменены заменяющим текстом.
Пример-5: Заменить весь контент из строки файла, используя 'c' после совпадения
Следующие 'sedКоманда 'показывает использование'c'заменить все после матча. Здесь, 'c'обозначает изменение. Команда будет искать слово 'настоящее время'в файле и замените всю строку текстом,'Эта строка заменена'если слово существует в любой строке файла.
$ cat посещаемость.текст$ sed '/ present / c Эта строка заменена на' посещаемость.текст
Следующий вывод появится после выполнения команд. Слово «присутствует» присутствует в первых двух строках файла, и эти две строки были заменены заменяющим текстом.
Пример-6: Заменить все содержимое строки файла на основе начального и конечного шаблона
Иногда требуется заменить текст по начальному и конечному шаблону. Следующая команда sed показывает способ определения начального и конечного шаблонов для замены строк из файла. Команда выполнит поиск в тех строках в файле, которые начинаются с числа 110 и заканчиваются словом «отсутствует», и заменяет все на слово «заменено» там, где шаблоны совпадают.
$ кошачья посещаемость.текст$ sed -e 's / ^ 110.* отсутствие посещаемости $ / replace / g.текст
Следующий вывод появится после выполнения команд. Здесь первая и четвертая строки начинаются с числа 110, но слово «отсутствует» существует только в четвертой строке. Итак, четвертая строка файла заменена заменяющим текстом.
Заключение:
Команда 'sed' - очень мощный инструмент Linux для выполнения различных задач, связанных с обработкой текста. Задача замены, основанная на подходящем шаблоне, обсуждается в этом руководстве с использованием различных типов шаблонов в команде sed. $ PARTITION_COLUMN, 'c' и '.* 'используется в этом руководстве для замены всей строки файла, в которой существует соответствующий шаблон. Здесь показано использование некоторых символов определяющих шаблонов, таких как '^' и '$'. Существует множество других символов, определяющих шаблон в регулярном выражении для целей поиска. Я надеюсь, что этот урок поможет читателю узнать основы замены всего из файла после матча.