|
7 / 6 / 4
Регистрация: 21.05.2017
Сообщений: 60
|
|||||||||||||||||||||
Ещё раз о жадности sed и выводе регулярок28.11.2017, 08:56. Показов 3799. Ответов 11
Метки нет (Все метки)
Появилось желание вывести все регулярки из текста с помощью sed.
Вот так, очевидно, сожрётся всё и останется одна регулярка в конце.
Но тут я решил вставить уже реальную регулярку и всё пошло не так:
Если можно без циклов покажите как регексп дать соответствующий. Ну а если так нельзя то с циклом. PS Я знаю про
0
|
|||||||||||||||||||||
| 28.11.2017, 08:56 | |
|
Ответы с готовыми решениями:
11
Если символ в данной строке встречается один раз, в конце строки добавлять ещё раз этот символ
|
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
|
| 28.11.2017, 20:04 | |
|
Не совсем понятно что именно Вы делаете. Приведите образец и что хотите из него получить.
0
|
|
|
7 / 6 / 4
Регистрация: 21.05.2017
Сообщений: 60
|
||
| 29.11.2017, 01:16 [ТС] | ||
|
Допустим есть регулярка
[1-9]{1,3}(\ [0-9]{3}){2,} Если проверить тут https://regexr.com/ то она выделит цифры больше миллиона разделенные пробелом по три:
Кроме замены, интересно, у сед вообще есть функция вывода регекспа аналогично grep? Но это не так важно, как разобраться с заменой текста на шаблон без жадности. Чтобы он вывел все совпадения шаблону, а не первое или последнее.
0
|
||
|
6799 / 2298 / 349
Регистрация: 10.12.2013
Сообщений: 7,924
|
||||||
| 29.11.2017, 11:33 | ||||||
|
Hermod,
русским языком нужно тоже пользоваться правильно. Как Чехов ( Tchehoff ). Который написал бы так: "Душечка, выведите из текста с помощью sed все последовательности символов, которые совпадают с регулярным выражением [1-9]{1,3}(\ [0-9]{3}){2,}"Добавлено через 24 минуты Но Маяковский использовал бы perl. Однозначно.
0
|
||||||
|
7 / 6 / 4
Регистрация: 21.05.2017
Сообщений: 60
|
||||
| 29.11.2017, 22:41 [ТС] | ||||
![]() PS Ваш вариант рабочий Но я хочу разобраться с тем как это делается именно на sed.Добавлено через 4 минуты Скажите а зачем вы добавили в РВ "?:" что это означает?
0
|
||||
|
6799 / 2298 / 349
Регистрация: 10.12.2013
Сообщений: 7,924
|
|||
| 29.11.2017, 23:22 | |||
|
то есть, это вполне себе автономный программный об'ект, который можно передавать, скажем, в другие модули, который можно компилировать, в котором могут интерполироваться внешние переменные ( как в Perl ). По сути регулярное выражение это встроенный язык программирования с неприятным синтаксисом, где его метасимволы это суть вызов подпрограмм, а аргументами являются символы обрабатываемого текста. Именно по этой причине мне категорически не нравится словосочетание 'вывести регулярку' вместо 'выполнить регулярное выражение'. (?: some code) - это незахватывающие скобки.можешь заменить (?:\ [0-9]{3}) на (\ [0-9]{3}) и посмотреть, что получится.
0
|
|||
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
||||||
| 30.11.2017, 02:11 | ||||||
|
"регулярка" суть жаргонное сокращение от словосочетания "регулярное выражение", которое, по простому говоря, есть набор символов и метасимволов, с помощью которого описывают подстроку, которая должна соответствовать данному регулярному выражению. Поэтому Ваше "вывести регулярку" просто невозможно в принципе. "Вывести подстроку соответствующую регулярному выражению" - вот так наверно правильно.
Что касается Вашего желания изобрести универсальный инструмент на все случаи жизни то скорее всего оно несбыточно. Тем хорош линукс что в нем существует узкоспециализированный инструмент для определенной задачи. И использовать что-то другое сравни попытке забивать гвозди плоскогубцами. Можно конечно, только зачем? Ведь есть молоток. Если же вопрос про искусственное усложнение своей "жизни" для более углубленного изучения инструмента, то "жадность" в данном случае регулируется совсем не так. Тем не менее в приведенном примере выводит то что надо:
0
|
||||||
|
7 / 6 / 4
Регистрация: 21.05.2017
Сообщений: 60
|
|||||
| 02.12.2017, 21:57 [ТС] | |||||
|
0
|
|||||
|
7 / 6 / 4
Регистрация: 21.05.2017
Сообщений: 60
|
|||||||||||
| 28.12.2018, 02:49 [ТС] | |||||||||||
|
Итак, возвращаемся к нашим баранам.
На этот раз исполняю комманду:
/dev/sda5: UUID="11R159H3BS8BW5J3" TYPE="ntfs" PARTUUID="q175k1n1-47" Мне нужно "выкусить" sed_om (и только им) UUID. При этом не по позициям символов а по содержанию строки. Я пишу
Т.е. я ожидаю увидеть в выводе: 11R159H3BS8BW5J3 Однако вместо этого sed выводит q175k1n1-47" Опять проблемы жадности, как я понимаю. Обьясните в чем ошибка?
0
|
|||||||||||
|
6799 / 2298 / 349
Регистрация: 10.12.2013
Сообщений: 7,924
|
|
| 28.12.2018, 09:13 | |
|
0
|
|
|
7 / 6 / 4
Регистрация: 21.05.2017
Сообщений: 60
|
|
| 28.12.2018, 09:43 [ТС] | |
|
Перепроверил. Выводит без кавычки.
Просто q175k1n1-47 Однако это не то, что я хочу
0
|
|
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
||||||||||||||||||
| 28.12.2018, 15:58 | ||||||||||||||||||
0
|
||||||||||||||||||
| 28.12.2018, 15:58 | |
|
Помогаю со студенческими работами здесь
12
Ещё раз о консоли Ещё раз о девушках Ещё раз о скриншотах Ещё раз о BIOS Ещё раз о линкопомойниках Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|