Проблема с декодированием вывода регулярного выражения {m, n} в sed

Цитата /usr/share/doc/rpm/README.Debian ]:

Пожалуйста, не используйте rpm напрямую для установки пакетов. Установите пакет alien и используйте команду alien для преобразования / установки пакета rpm с помощью dpkg . Использование rpm для установки пакетов вызывает подробные жалобы в системах Debian (вы можете отключить эти предупреждения с помощью - force-debian ).

Причина в том, что даже при использовании пакета Debian rpm , rpm не знает о пакетах, управляемых dpkg , поэтому не может используйте их для разрешения зависимостей.

2
02.08.2016, 16:32
2 ответа

Демистификация второго случая

sed -n '/^[0-9]\{1,3\}$/p' file
  • ^ соответствует началу строки
  • [0-9] \ {1,3 \} позволяет от одной до трех десятичных цифр.
  • $ соответствует концу строки (он говорит: «Хорошо, я больше ничего не хочу в записи»)

По сравнению с первым случаем $ имеет значение во втором.

0
27.01.2020, 22:19

Это регулярное выражение:

^[0-9]\{1,3\}

указывает sed искать:

  • ^ - начало строки, за которым следует
  • [0-9] - одна цифра, \ {1,3 \} - повторяется от 1 до 3 раз, за ​​которыми следует
  • что угодно или ничего

... который соответствует каждой строке вашего образца ввода, как вы видели. Он соответствует первым трем строкам, потому что они начинаются с одной, двух или трех цифр. Он соответствует последующим строкам, потому что все они начинаются с трех цифр (и продолжаются, но регулярному выражению все равно).

Регулярные выражения являются «жадными», что означает, что по умолчанию они будут соответствовать как можно большему количеству совпадений (учитывая всю гибкость, которую вы кодируете во всем регулярном выражении), но также и «ленивыми» в том смысле, что они не нуждаются в сопоставьте всю строку, если вы специально не прикрепите ее к обоим концам с помощью ^ и $ .

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

2
27.01.2020, 22:19

Теги

Похожие вопросы