Задачи замены можно выполнять в Linux по-разному. Команда sed – один из способов выполнить задачу замены. Эту команду можно использовать для замены текста в строке или файле с помощью другого шаблона. В этой статьи показано, как вы можете заменить все после совпадающего шаблона с помощью команды `sed`.
Как часть строки может быть заменена на основе совпадающего шаблона и $ PARTITION_COLUMN, было показано в этом разделе этой статьи. Но эта переменная работает, если шаблон соответствует любому слову в начале или середине строки. Он не заменит текст, если шаблон совпадает с последним словом строки.
Следующая команда выполнит поиск символа «а», а оставшаяся часть после «а» будет заменена текстом «популярный блог-сайт». $ PARTITION_COLUMN. * используется для определения оставшейся части после символа ‘a’.
$ echo "AndreyEx это сайт" | sed "s/a $PARTITION_COLUMN.*/популярный блог-сайт/"
Здесь слово «веб-сайт» было заменено на «популярный блог-сайт».
Следующий шаблон будет искать слово «сеть» в строке и заменять оставшуюся часть «сеть» текстом, «популярный блог-сайт», если совпадение существует и «сеть» не является частью последнего слова строки.
$ echo "AndreyEx это сайт" | sed "s/сеть.* $PARTITION_COLUMN.*/популярный блог-сайт/"
Здесь «веб-сайт» – это последнее слово в строке, и по этой причине замена не производилась.
Следующая команда выполнит глобальный поиск слова «bash» в строке и заменит все на слово, если слово существует в строке. ‘ g ‘ используется здесь для глобального поиска.
$ echo "Мне нравится программирование на bash" | sed "s/bash.*/python script/g"
Здесь «bash» находится в середине строки, и замена произведена.
Все содержимое определенной строки или нескольких строк или оставшихся строк файла после совпадения можно заменить с помощью команды `sed` . Создайте текстовый файл с именем visitance.txt со следующим содержимым, чтобы протестировать примеры, показанные в этом разделе.
visitance.txt
1108885 есть
1999979 есть
1769994 отсутствует
1105656 отсутствует
1455999 отсутствует
Следующая команда `sed` будет искать номер 1769994 в файле, и все, что содержит этот номер, будет заменено текстом«1586844 присутствует», если номер существует в любой строке файла.
$ cat allendence.txt $ sed "s/1769994.*/1586844 присутствует/" attendance.txt
Здесь поисковый номер существует в третьей строке файла, и замена была произведена.
Следующая команда `sed` показывает использование переменной $ PARTITION_COLUMN для замены нескольких строк из файла. Команда будет искать «110» в начале каждой строки файла и заменять все на «110» на текст «Недействительная запись», где будет найден соответствующий текст.
$ cat attendance.txt $ sed "s/^110.* $PARTITION_COLUMN.*/недействительная запись/" attendance.txt
«110» присутствует в двух строках файла, и они были заменены замещающим текстом.
Следующая команда ` sed` показывает использование «c» для замены всего после совпадения. Здесь «c» обозначает изменение. Команда выполнит поиск слова «присутствует» в файле и заменит всю строку текстом «Эта строка заменена», если слово существует в любой строке файла.
$ cat attendance.txt $ sed '/present/c Эта строка заменяется ' attendance.txt
Слово «присутствует» присутствует в первых двух строках файла, и эти две строки были заменены замещающим текстом.
Иногда требуется заменить текст на основе начального и конечного шаблона. Следующая команда `sed` показывает способ определения начального и конечного шаблонов для замены строк из файла. Команда выполнит поиск в тех строках в файле, которые начинаются с числа 110 и заканчиваются словом «отсутствует», и заменяет все на слово «заменено» там, где шаблоны совпадают.
$ cat attendance.txt $ sed -e 's/^110.*absent$/replaced/g' attendance.txt
Здесь первая и четвертая строки начинаются с числа 110, но слово «отсутствует» существует только в четвертой строке. Итак, четвертая строка файла заменена замещающим текстом.
Команда `sed` – очень мощный инструмент Linux для выполнения различных задач, связанных с обработкой текста. Задача замены, основанная на соответствующем шаблоне, обсуждается в этой статье с использованием различных типов шаблонов в команде `sed`. $ PARTITION_COLUMN, ‘c’ и ‘. *’ Используются в этой статье для замены всей строки файла, где существует соответствующий шаблон. Здесь показано использование некоторых символов определяющих шаблонов, таких как ‘^’ и ‘$’. Существует множество других символов, определяющих шаблон в регулярном выражении для целей поиска.