Программа sed что это

Содержание

Примеры команды Sed

Полезные однострочные скрипты для sed (потокового редактора Unix), составленные Эриком Пементом

Есть несколько программ, которые являются настоящими рабочими лошадками в обойме UNIX. Эти программы просты в использовании для простых действий, хотя они имеют богатый набор команд для выполнения комплексных действий. Не нужно пренебрегать изучением потенциала программ, ведь очень часто получается, что кто-то пишет свою функцию или подпрограмму, а, оказывается, всё уже давно написано, что уже есть программа, которая делает это в одну строку, но нужно знать эту программу, знать с какими ключами её запустить.

Sed — это первичный потоковый редактор.

Потоковый редактор sed — это текстовый редактор, которые выполняет операции редактирования информации поступающей из стандартного ввода или из файла. Это означает, что вы можете отправлять вывод другой команды прямо на sed для редактирования, или вы можете работать с файлом, который вы уже создали. Также важно помнить, что по умолчанию sed всё выводит также в стандартный вывод. Это означает, что если не сделан редирект, sed будет печатать вывод на экран, вместо того, чтобы сохранить в файл.

Регистрация входящего документа в СЭД ГО УР

Sed редактирует построчно и в неинтерактивном режиме.

sed [опции] команды [файл-для-редактирования]

Переводы строк в файле:

Удвоение перевода строк:

sed G

Удвоение перевода строк в файле, который уже имеет пустые строки. Конечный файл должен содержать не более чем одну пустую строку между двумя строками текста.

sed ‘/^$/d;G’

Утроение перевода строк

sed ‘G;G’

Отмена удвоения строк (предполагается, что чётные строки всегда пустые)

sed ‘n;d’

Вставить пустую строку над каждой строкой, которая соответствует “regex”

sed ‘/regex/’

Вставить пустую строку под каждой строкой, которая соответствует “regex”

sed ‘/regex/G’

Вставить пустую строку над и под каждой строкой, которая соответствует “regex”

sed ‘/regex/’

Нумерация:

Пронумеровать каждою строку в файле (просто в левой стороне будут цифры). Использование отступа вместо пробела сохраняет ровное начало строк.

sed = filename | sed ‘N;s/n/t/’

Пронумеровать каждую строку в файле (номера слева, выравнивание по правому краю)

sed = filename | sed ‘N; s/^/ /; s/ *(.\)n/1 /’

Пронумеровать каждую строку файла, но печатать номер только если строка не пустая

sed ‘/./=’ filename | sed ‘/./N; s/n/ /’

Посчитать строки (эмулирует “wc -l”)

sed -n ‘$=’ filename

Преобразования текста и подстановки:

В окружении UNIX: конвертируем новые строки DOS (CR/LF) в формат Unix.

Предполагаем, что все строки оканчиваются на CR/LF

sed ‘s/.$//’

В bash/tcsh, нажмите Ctrl-V затем Ctrl-M

sed ‘s/^M$//’

Работает на ssed, gsed 3.02.80 или выше

В окружении UNIX: конвертируем новые строки Unix (LF) в формат DOS.

Командная строка под ksh

sed «s/$/`echo -e \r`/»

Командная строка под bash

Управление документами в СЭД «ДЕЛО»


sed ‘s/$'»/`echo \r`/»

Командная строка под zsh

sed «s/$/`echo \r`/»

gsed 3.02.80 или выше

sed ‘s/$/r/’

В окружении DOS: конвертируем новые строки Unix (LF) в формат DOS.

sed «s/$//»
sed -n p

В окружении DOS: конвертировать DOS переводы строк (CR/LF) в формат Unix.

Может быть только сделано с UnxUtils sed, версии 4.0.7 или выше. Версию UnxUtils можно узнать пользовательским свичем “–text”, который появляется когда вы используете свич “–help”. В других случаях изменение перевода строк DOS в перевод строк Unix не может быть выполнено в окружении DOS. Используйте вместо этого “tr”.

UnxUtils sed v4.0.7 или выше

sed «s/r//» infile >outfile

GNU tr версия 1.22 или выше

tr -d r outfile

Удалить пустоту в начале (пробелы, табуляции) от передней части каждой строки выравнивает весь текст по левому краю

sed ‘s/^[ t]*//’

Удаление пустоты (пробелы, табуляции) в конце каждой строки

Удаление пустоты как в начале, так и в конце каждой строки

sed ‘s/^[ t]*//;s/[ t]*$//’

Вставка 5 пробелов в начале каждой строки (сделать отступ страницы)

sed ‘s/^/ /’

Выравнять весь текст заподлицо справа на 79-ом столбце по ширине

sed -e :a -e ‘s/^.$/ ta’ # установить в 78 плюс 1 пробел

Центрировать весь текст в середине на 79-ом столбце по ширине

В первом методе пробелы в начале строки имеют значение, и в конце строки добавляются пробелы.

sed -e :a -e ‘s/^.$/ ta’

Во втором методе пробелы из начала строки отбрасываются в центрируемой строке, и в конце строки пробелы не добавляются.

sed -e :a -e ‘s/^.$/ ta’ -e ‘s/( *)1/1/’

Подстановка (поиск и замена “foo” на “bar” в каждой строке

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

sed ‘s/foo/bar/’

Заменить только четвёртое вхождение в строке

sed ‘s/foo/bar/4’

Заменить ВСЕ вхождения в строке

sed ‘s/foo/bar/g’

Заменяет следующее-на-последнее вхождение (the next-to-last case)

sed ‘s/(.*)foo(.*foo)/1bar2/’

Поменять только последний случай

sed ‘s/(.*)foo/1bar/’

Поменять “foo” на “bar” ТОЛЬКО для строк, которые содержат “baz”

sed ‘/baz/s/foo/bar/g’

Заменить “foo” на “bar” КРОМЕ строк, которые содержат “baz”

sed ‘/baz/!s/foo/bar/g’

Поменять “scarlet” или “ruby” или “puce” на “red”

sed ‘s/scarlet/red/g;s/ruby/red/g;s/puce/red/g’
gsed ‘s/scarlet|ruby|puce/red/g’

Обратный порядок строк (эмулирует “tac”) баг/фича в HHsed v1.5 приводит к тому, что пустые строки удаляются

Читайте также:
Und что это за программа

sed ‘1!G;h;$!d’
sed -n ‘1!G;h;$p’

Обратный порядок всех символов в строке (эмулирует “rev”)

sed ‘/n/!G;s/(.)(.*n)///D;s/.//’

Соединить пары строк (наподобие “paste”)

sed ‘$!N;s/n/ /’

Если строка заканчивается на обратный слэш, прикрепить к ней следующую строку

sed -e :a -e ‘/\$/N; s/\n//; ta’

Если строка начинается со знака равно, прикрепить её к предыдущей строке и заменить “=” на пробел

sed -e :a -e ‘$!N;s/n=/ /;ta’ -e ‘P;D’

Добавить запятые в цифровую строку, замена “1234567” на “1,234,567”

gsed ‘:a;s/B[0-9]\>/,ta’
sed -e :a -e ‘s/(.*[0-9])([0-9]\)/1,2/;ta’

Добавить запятые к номерам, в том числе содержащим десятичные точки и знаки минус (GNU sed)

gsed -r ‘:a;s/(^|[^0-9.])([0-9]+)([0-9])/12,3/g;ta’

Добавить пустую строку каждые 5 строк (после каждых 5, 10, 15, 20 и т. д. строк)

gsed ‘0~5G’
sed ‘n;n;n;n;G;’

Выборочная печать конкретных строк:

Напечатать первые 10 строк файла (эмулирует поведение “head”)

sed 10q

Напечатать первую строку файла (эмулирует “head -1″)

sed q

Напечатать последние 10 строк файла (эмулирует “tail”)

sed -e :a -e ‘$q;N;11,$D;ba’

Напечатать последние 2 строки файла (эмулирует “tail -2″)

sed ‘$!N;$!D’

Напечатать последнюю строку файла (эмулирует “tail -1″)

sed ‘$!d’
sed -n ‘$p’

Напечатать строки файла начиная с последней

Для файла в одну строку напечатать пустую строку

sed -e ‘$!’ -e x

Для файла в одну строку, напечатать эту строку:

sed -e ‘1’ -e ‘$!’ -e x

Для файла в одну строку ничего не печатать

sed -e ‘1’ -e ‘$!’ -e x

Печатать только строки, которые соответствуют регулярному выражению (эмулирует “grep”)

sed -n ‘/regexp/p’
sed ‘/regexp/!d’

Печатать только строки, которые НЕ соответствуют регулярному выражению (эмулирует “grep -v”)

Метод 1, соответствует вышеприведённому

sed -n ‘/regexp/!p’

Метод 2, упрощённый синтаксис

sed ‘/regexp/d’

Печатать строку, которая идёт перед строкой, удовлетворяющей регулярному выражению, но не строку, содержащую регулярное выражение

sed -n ‘/regexp/;h’

Печатать строку, которая идёт сразу после регулярного выражения, но не строку, содержащую регулярное выражение

sed -n ‘/regexp/’

Печатать по одной строке перед и после регулярного выражения, с номером строки, показывающей где встретилось регулярное выражение (наподобии “grep -A1 -B1″)

sed -n -e ‘/regexp/’ -e h

grep для AAA и BBB и CCC (в любом порядке)

sed ‘/AAA/!d; /BBB/!d; /CCC/!d’

grep для AAA и BBB и CCC (в таком порядке)

sed ‘/AAA.*BBB.*CCC/!d’

grep для AAA или BBB или CCC (эмулирует “egrep”)

sed -e ‘/AAA/b’ -e ‘/BBB/b’ -e ‘/CCC/b’ -e d
gsed ‘/AAA|BBB|CCC/!d’

Напечатать параграф, если он содержит AAA (параграфы разделяют пустые строки) HHsed v1.5 должен вставить ‘G;’ после ‘x;’ в следующих трёх скриптах ниже

sed -e ‘/./’ -e ‘x;/AAA/!d;’

Напечатать параграф, если он содержит AAA и BBB и CCC (в любом порядке)

sed -e ‘/./’ -e ‘x;/AAA/!d;/BBB/!d;/CCC/!d’

Напечатать параграф, если он содержит AAA или BBB или CCC

sed -e ‘/./’ -e ‘x;/AAA/b’ -e ‘/BBB/b’ -e ‘/CCC/b’ -e d
gsed ‘/./;x;/AAA|BBB|CCC/b;d’

Напечатать только строки длинной 65 символов или длиннее

sed -n ‘/^./p’

Напечатать только строки, которые короче 65 символов

Метод 1, соответствует вышеприведённому

sed -n ‘/^./!p’

Метод 2, упрощённый синтаксис

sed ‘/^./d’

Напечатать секцию файла от регулярного выражения до конца файла

sed -n ‘/regexp/,$p’

Напечатать секцию файла, включающую номера строк (строки 8-12, включая и 8 и 12)

sed -n ‘8,12p’
sed ‘8,12!d’

Напечатать строку с номером 52

sed -n ’52p’
sed ’52!d’

Способ 3, эффективен на больших файлах

sed ’52q;d’

Начиная со строки 3, печатать каждую седьмую строку

gsed -n ‘3~7p’
sed -n ‘3,$’

Напечатать раздел файла между двумя регулярными выражениями (включая)

sed -n ‘/Iowa/,/Montana/p’ # чувствительно к регистру

Выборочное удаление конкретных строк:

Напечатать весь файл КРОМЕ секции между двумя регулярными выражениями 2

sed ‘/Iowa/,/Montana/d’

Удалить дубликаты последовательных строк файла (эмулирует “uniq”). Первая строка из двух дублирующих сохраняется, остальное удаляется.

sed ‘$!N; /^(.*)n1$/!P; D’

Удалить дубликаты непоследовательных строк из файла. Остерегайтесь переполнения буфера или используйте GNU sed.

sed -n ‘G; s/n//; /^([ -~]*n).*n1/d; s/n//; h; P’

Удалить все строки, кроме дублирующих строк (эмулирует “uniq -d”).

sed ‘$!N; s/^(.*)n1$/1/; t; D’

Удалить первые 10 строк файла

sed ‘1,10d’

Удалить последние строки файла

sed ‘$d’

Удалить последние 2 строки файла

sed ‘N;$!P;$!D;$d’

Удалить последние 10 строк файла

sed -e :a -e ‘$d;N;2,10ba’ -e ‘P;D’
sed -n -e :a -e ‘1,10!;N;ba’

Удалить каждую восьмую строку файла

gsed ‘0~8d’
sed ‘n;n;n;n;n;n;n;d;’

Удалить строки, содержащие паттерн

sed ‘/pattern/d’

Удалить ВСЕ пустые строки из файла (то же самое что и “grep ‘.’ “)

sed ‘/^$/d’
sed ‘/./!d’

Удалить все ПОСЛЕДОВАТЕЛЬНЫЕ пустые строки из файла, кроме первой, также удаляет все пустые строки в начале и в конце файла (эмулирует “cat -s”)

Способ 1, позволяет 0 пустых строк вверху, 1 в EOF

sed ‘/./,/^$/!d’

Способ 2, позволяет 1 пустую строку вверху, 0 в EOF

sed ‘/^$/N;/n$/D’

Удалить все ПОСЛЕДОВАТЕЛЬНЫЕ пустые строки из файла кроме первых двух:

sed ‘/^$/N;/n$/N;//D’

Удалить все первые пустые строки в файле

sed ‘/./,$!d’

Удалить все конечные пустые строки в файле

sed -e :a -e ‘/^n*$/’ # works on all seds

Удалить последнюю строку каждого параграфа

sed -n ‘/^$/;/./’

Специальные приложения:

Удалить оверстрайки nroff (char, backspace) из страниц man. Команде ‘echo’ может понадобиться переключатель -e если вы используете Unix System V или шелл bash.

Требуются двойные кавычки для окружения Unix

sed «s/.`echo \b`//g»

в bash/tcsh, нажмите Ctrl-V, а затем Ctrl-H

sed ‘s/.^H//g’

hex выражения для sed 1.5, GNU sed, ssed

sed ‘s/.x08//g’

Получить заголовки Usenet/e-mail сообщений

sed ‘/^$/q’ # удаляет всё после первой пустой строки

Получить тело Usenet/e-mail сообщений

sed ‘1,/^$/d’ # удаляет всё до первой пустой строки

Получает Тему из заголовка, но удаляет первоначальное “Subject: ”

sed ‘/^Subject: */!d; s///;q’

Читайте также:
Представление программы в фигурном что это

Получает обратный адрес отправителя из заголовка

sed ‘/^Reply-To:/q; /^From:/h; /./d;g;q’

Разбирает поле адрес. Достаёт чистый e-mail адрес из первой строки, которая включает в себя кусок заголовка (смотрите предыдущий скрипт)

sed ‘s/ *(.*)//; s/>.*//; s/.*[:

Добавить ведущую скобку и пробел для каждой строки (цитата сообщения)

sed ‘s/^/> /’

Удалить ведущую скобку и пробел для каждой строки (расцитативание)

sed ‘s/^> //’

Удаление большинства HTML тэгов (включая многострочные тэги)

sed -e :a -e ‘s/<[^>]*>//g;/

Добавление/удаление пустых строк в файле

1. Вставить после каждой текстовой строки одну пустую:

2. Вставить две пустые строки:

3. Удалить все пустые строки и вставить по одной после каждой текстовой:

4. Вставить пустую строку над каждой, содержащей love :

5. Вставить пустую строку после каждой, содержащей love :

6. Вставить 5 пробелов слева от каждой строки:

Нумерация строк

1. Пронумеровать каждую строку файла (с левым выравниванием).

В этой команде символ = используется для нумерации строки, а флаг t для табулирования между номером и предложением:

2. Пронумеровать каждую строку файла (число слева, выравнивание по правому краю).

Эта команда похожа на `cat -n filename` :

3. Пронумеровать каждую непустую строку файла:

Удаление строк

1. Удалить конкретную строку:

2. Удалить последнюю строку:

Синтаксис: sed ‘$d’ filename

3. Удалить строки с x по y :

4. Удалить строки с n-ой до последней:

5. Удалить строку, содержащую шаблон:

6. Удалить каждую вторую строку начиная с n-ой:

7. Удалить строки, содержащие шаблон, и по две строки после них:

8. Удалить пустые строки:

9. Удалить пустые строки или начинающиеся с # :

Просмотр/вывод строк

Для просмотра содержимого файла мы используем команду cat , а его начало и конец просматриваем с помощью утилит head и tail . Но что, если нас интересует некий участок в середине файла? В таком случае можно снова задействовать sed .

1. Просмотреть файл со строки x по y:

2. Просмотреть весь файл, за исключением заданного диапазона:

3. Вывести n-ую строку файла:

4. Вывести строки с x по y:

5. Вывести только последнюю строку:

Синтаксис: sed -n ‘$’p filename

6. Вывести с n-ой строки до последней:

7. Вывести строки, содержащие указанный шаблон:

8. Вывести строки начиная с первой, где обнаружен шаблон, и до строки x:

В данном случае первое вхождение everyone содержится в строке 3, значит в терминале отобразятся строки с 3 по 5. Если нужно вывести файл до конца, используйте вместо 5 символ $ .

9. Вывести строки с x и до строки, содержащей шаблон. Если шаблон не обнаруживается, выводится файл до конца:

Синтаксис: sed -n ‘x,/pattern/p’ filename
Пример: sed -n ‘1,/everyone/p’ a.txt

10. Вывести все строки, содержащие шаблон, включая следующие за каждой из них x строк:

Синтаксис: sed -n ‘/pattern/,+xp’ filename
Пример: sed -n ‘/learn/,+2p’ a.txt

Замена с помощью команды sed (дополнение)

Ниже приводится небольшой список операций, дополняющий перечисленные ранее.

1. Два способа замены шаблона, игнорируя регистр:

1.1 Использовать флаг /i :

1.2 Использовать регулярные выражения:

2. Замена нескольких пробелов одним:

3. Замена шаблона, сопровождающего другой шаблон:

10. Замена шаблона другим шаблоном, за исключением строки n:

  • Блог компании RUVDS.com
  • Настройка Linux
  • *nix
  • Серверное администрирование

Источник: habr.com

Утилита Sed Linux: назначение и примеры использования

Название Sed произошло от английского сокращения — Stream EDitor, потоковый текстовый редактор для Unix-среды. Sed не похож на привычный инструмент для работы с текстом, поскольку не является интерактивным редактором в привычном понимании. По своей «‎ странности » он чем-то похож на знаменитый Vim. Принцип работы Sed заключается в непрерывной обработке входящего потока данных, например, в составе программного канала. Напомним, что программный канал или pipe — способ передачи вывода одной команды на вход другой.

Собираем на дрон для штурмовиков Николаевской области. Он поможет найти и уничтожить врага

Утилита Sed работает с текстовыми файлами. Принцип работы с ним заключается в том, что вы указываете параметры редактирования текста, а программа сама автоматически производит все необходимые изменения. Благодаря такому конвейерному подходу, редактор может справляться с довольно большими массивами текстовых данных. Программа может спасти ситуацию, когда необходимо внести изменения в большие файлы, с которыми не справляются (или неэффективны) обычные средства. Команды Sed составляют определенный синтаксис, который влияет на правила обработки текстовой информации.

Внутренние команды

У редактора Sed очень много внутренних команд. Самая главная из них, которая используется чаще других, — это команда замены текстового фрагмента. Чтобы поменять один текстовый фрагмент на другой, используем конструкцию:

УПРАВЛІННЯ КОМАНДОЮ
Зберіть свою команду мрії та ведіть її до спільної мети.

co

На практике это выглядит так:

$ highload today | sed s/today/yesterday/ (Enter) highload yesterday

При наличии метасимволов в тексте выражение s/ИСХОДНЫЙ_ТЕКСТ/ЗАМЕНЯЕМЫЙ_ТЕКСТ/ необходимо было бы заключать в кавычки.

Иногда вместо прямого слеша используется обратный (в другую сторону). Это может быть удобно, если необходимо менять пути к каталогам (path), которые также разделяются прямым слешем. Например, когда имеем дело с каталогами /usr/local/bin , код выглядит некрасиво, так сказать, с «‎ частоколом » :

Поэтому в роли элемента-разделителя в Sed можно применять альтернативные символы (практически любые) — двоеточие, нижнее подчеркивание, знак « шарп » , « тильда » и так далее.

Поскольку работа потокового редактора завязана на регулярных выражениях, поговорим об их синтаксисе. Любой неспециальный символ — буква или цифра — в программе видятся как регулярные выражения , представляющие сами себя.

Перечислим стандартные обозначения Regex:

    * (звездочка) после любого символа или выражения означает произвольное количество повторений текста. Оно может быть и нулевым.

Примеры использования данного синтаксиса:

  • zxcvbn Означает zxcvbn
  • c*d Означает количество символов с более нуля (включительно) и одну букву d. Например, ccccccd; cd; или d.
  • z?x Означает x или zx
  • c+d+ Означает одну или больше букв c и одну или больше букв d. Например: cd; ccccd; cddddd; или ccccccddddddd.
  • .* Выражение, которое определяет весь текст в строке, на всех строках, включая пустые.
  • .+ Маска, задающая все символы на строках с количеством не менее одного символа. Это выражение игнорирует пустые строки.
  • ^after.*(.*) Маска для поиска строк, которые начинаются со слова after, а также включают открывающую и закрывающие скобки, причем перед и после открывающей скобки может располагаться произвольное количество символов (в том числе, равное нулю).
  • ^# Поиск строк, которые начинаются с символа « шарп » (удобно для поиска и редактирования комментариев в коде)
  • \$ Строки, в конце которых стоит обратный слэш ().
  • [a-zA-Z_] Любые буквы или цифры
  • [^ ]+ (В скобке, установлен также пробел и табуляция) — команда описывает один и более символов, кроме пробела и табуляции. Как правило, такое регулярное выражение соответствует словам.
Читайте также:
2с что за программа

Знак )/’ (20381)

Без знака « * » текстовый редактор применил бы регулярное выражение только к первому знаку:

$ echo 20381 | sed ‘s/[0-9]/()/’ mathexpression.txt x+(5467-176)=y

Пример удвоения исходного фрагмента текста с помощью амперсанда

$ echo 701 | sed «s/[0-9]*//» 701 701

Обратите внимание на то, что выражение [0-9]* ищет совпадения только в первом символе строки. Поэтому, если переставить фрагменты местами, то повторение наблюдаться не будет.

$ echo «xyz 701» | sed «s/[0-9]*//» xyz 701

Чтобы они удваивались, необходимо отредактировать маску замены:

$ echo «xyz qwer 701» | sed «s/[0-9][0-9]*//» xyz qwer 701 701

Перестановка слов местами

Ниже показан пример синтаксиса для редактора Sed, при котором слова в текстовом фрагменте меняются местами.

$ echo вход выход |sed ‘s/([а-я]*) ([а-я]*)/2 1/’
выход вход

В этом выражении мы запоминаем две подстроки, а затем выполняем их ротацию.

Удаление повторов

В данном случае 2 соответствует второму слову, а 1 — первому. Маску 1 можно использовать не только в шаблоне для замены, но и в образце для удаления повторяющихся слов.

$ echo longpool longpool | sed ‘s/([а-я]*) 1/1/’
longpool

Модификаторы

Язык команд утилиты Sed реагирует модификаторы, которые конфигурируют действие программы если в строке имеется более одного совпадения. Например, глобальный модификатор g , определяет область поиска, не ограничивая его первым словом на строке. Так, если в документе есть текст и мы его обрабатываем без глобального модификатора g , имеем:

$ echo день этот, был самый обычный день | sed ‘s/день/денек/’ денек этот, был самый обычный день

Теперь запишем с модификатором и получим:

$ echo кот этот, был самый обычный кот | sed ‘s/день/денек/g’ денек этот, был самый обычный денек

Другой тип модификатора — числовой. Это простое число, которое показывает на номер совпавшего фрагмента, который необходимо отредактировать.

$ echo температура перманентно растет | sed ‘s/[а-я]*/падает/3’температура перманентно падает

Возможна также комбинация глобального и числового модификаторов

$ echo какая странная функция | sed ‘s/[а-я]*/(неопределенность)/2g’какая (неопределенность) (неопределенность)

Для удаления определенных слов в поле замены мы ничего не ставим или ставим пробел:

$ echo температура перманентно растет | sed ‘s/[^ ]*//2g’температура

Модификатор /w дает возможность записывать результат редактирования сразу в определенный файл:

$ sed ‘s/Исходный_фрагмент/Регулярное_выражение/w имя_файла

Команда /p в редакторе делает вывод на экран результата редактирования. Поскольку она применяется сама к себе, то удваивает число строк

$ echo спасибо, что живой | sed ‘p’ спасибо, что живой спасибо, что живой

Комбинируя команду печати с командой для запрета отображения строк, можно сделать маску, при которой будут показаны, например, одни только комментарии:

$ sed -n ‘/^#/ p’ /boot/grub/menu.lst # GRUB configuration file ‘/boot/grub/menu.lst’. # generated by ‘grubconfig’. Птн 13 Сент 2021 02:31:11 # # Start GRUB global section # End GRUB global section # Linux bootable partition config begins # Linux bootable partition config ends # Linux bootable partition config begins # Linux bootable partition config ends

Из прочих команд хотелось бы отметить команду = , которая сообщает номер указанной строки, а также команду q (quit) , благодаря которой утилита может выполнить завершение своей работы по достижению указанной строки.

Заключение

Утилита Sed — один из тех инструментов, которыми приходится пользоваться не каждый день, однако, не имеющий альтернатив. Она справляется с большими объемами данных и при грамотном использовании регулярных выражений может творить с текстом чудеса, автоматизируя рутинную работу пользователя. Более подробное описание синтаксиса языка Sed можно найти в его официальной документации или в соответствующем « man » .

Источник: highload.today

20 примеров использования потокового текстового редактора sed

Компьютерное

Существует несколько вариантов использования, в зависимости от того, когда были созданы файлы проекта. Итак, наши уведомления об авторских правах должны следовать одному из этих двух форматов:

Для файлов, созданных в прошлом году

Для файлов, созданных до прошлого года

Мы можем захватить эти два варианта использования сразу с использованием расширенного регулярного выражения (-E). Единственные «расширенные» вещи, которые мы действительно будем использовать здесь, – это скобки:

sh$ sed -i -Ee ‘s/Copyright (. )(-. )?/Copyright 1-2024/’ *.sh

Я рекомендую вам вручную изменить уведомление об авторских правах в файлах * .sh, а затем запустить приведенную выше команду в случаях использования, чтобы увидеть, как она работает.

В конечном итоге это может помочь вам понять, если я скажу в шаблоне поиска: Copyright :: – это буквальный текст, который будет соответствовать дословно; (….) :: определяет группу захвата, соответствующую четырем произвольным символам. Надеюсь, четыре цифры года; (- ….)? :: определяет группу захвата, соответствующую тире, за которой следуют четыре произвольных символа. Значок вопроса в конце указывает, что группа является необязательной. Он может или не может присутствовать во входной строке.

В строке замены: Copyright :: – это буквальный текст, который будет скопирован дословно; 1 :: является содержимым первой группы захвата -2024 :: является буквальным текстом, который будет скопирован дословно.

Если вы потратили время на проверку команды самостоятельно, она должна подтвердить, применяю ли эти правила к примерам использования, описанным в предыдущей таблице, я получу что-то вроде этого:

Источник: andreyex.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru