![]() 3297 / 920 / 199
Регистрация: 14.01.2013
Сообщений: 4,586
|
|||||||||||
Регуляр для bash/grep/sed/awk/perl13.11.2024, 14:28. Показов 1318. Ответов 29
Имеется текст такого вида
![]()
0
|
13.11.2024, 14:28 | |
Ответы с готовыми решениями:
29
|
Невнимательный
![]() |
||||||
13.11.2024, 15:03 | ||||||
как вариант
![]() Добавлено через 2 минуты оптимальнее -nE "!/^\[\d+:...
0
|
![]() 6328 / 2169 / 340
Регистрация: 10.12.2013
Сообщений: 7,453
|
|||||||||||
13.11.2024, 17:30 | |||||||||||
myproc
1
|
Невнимательный
![]() |
|
13.11.2024, 17:31 | |
если не бывает :01
![]() perl -nE "say qq'$1 $2' if /^\[\d+:(?!0)(\d+).*?-d\h*([.0-9]+)/" "./test.txt"
0
|
![]() 6328 / 2169 / 340
Регистрация: 10.12.2013
Сообщений: 7,453
|
|
13.11.2024, 17:42 | |
Eddy_Em,
Эдуард, страшный патч Бармина - это просто шутка с оператором tr ( Translate одну букву в другую )
0
|
![]() 3297 / 920 / 199
Регистрация: 14.01.2013
Сообщений: 4,586
|
||||||
14.11.2024, 06:52 [ТС] | ||||||
Это великолепно! Пойду тереть зубы, чтобы вникнуть, как оно работает.
Не бывает. Но не взлетело.
Но в незабываемые впечатления от регуляров она умеет ![]() Добавлено через 1 минуту Файл сколхозить, конечно, можно. Но желательно на лету, одной строкой.
0
|
321 / 46 / 11
Регистрация: 08.04.2022
Сообщений: 177
|
||||||
14.11.2024, 10:02 | ||||||
что фраза точно поразумевает
а) второе поле не должно быть 0 б) второе поле не должно содержать 0 Мой первый вариант подразумевает вариант а). Если надо решить вариант б), то зубы дробить так:
0
|
Невнимательный
![]() |
||||||
14.11.2024, 14:25 | ||||||
С виндовыми кавычками потомучто
![]() но у меня bash
0
|
![]() 6328 / 2169 / 340
Регистрация: 10.12.2013
Сообщений: 7,453
|
||||||
14.11.2024, 14:28 | ||||||
дожил.
колхозником назвали. и это, заметьте, за развертывание regex в идиоматическую вертикаль с комментами и удобной правкой фрагментов, ежели чо.
0
|
![]() 3297 / 920 / 199
Регистрация: 14.01.2013
Сообщений: 4,586
|
|
14.11.2024, 15:07 [ТС] | |
И это именно то, что доктор прописал. Спасибо.
Лучше написать, что за зубная пыль содержится здесь: Перебрал несколько мануалов, нигде не нашёл развёрнутого варианта. Везде про разделитель пишут. Но, тут явно нечто большее ![]() Да. Этот вариант сработал. Да это ж выражение такое. К колхозникам не имеет отношения ![]() Работает! Но вот этот, самый изящный вариант:
0
|
321 / 46 / 11
Регистрация: 08.04.2022
Сообщений: 177
|
|||||||||||||||||||||||||||||||||||||||||
14.11.2024, 16:43 | |||||||||||||||||||||||||||||||||||||||||
![]() Решение
-F устанавливает пользовательский разделитель полей. А он у нас регулярно выраженный. И разделитель может быть один из:* [\\[\\]:/] - разделилетелем может быть один из символов левая квадратная скобка \\[ , правая квадратная скобка \\] , жвоеточие : или прямой слеш/ * или [ \\t]+ - группа пробельных символов (любая комбинация пробелов и символов табуляции \\t )А теперь несколько слов откуда частокол обратных слешей \\ . Дело в том, что внешние квадратные скобки - это часть синтаксиса регекспов, который говорит: "это список чего-то". Но в этот список входят сами скобки. И поэтому, чтобы правильно интерпретировать их как простые символы, их надо экранировать. Но в последних своих версиях GNU Awk сильно ругается:
Давай посмотрим, что же у нас получится. Вот первая строка из примера (обрезал остаток строки):
Добавлено через 20 минут Ну раз я упомянул perl, то вот мое видение решения с его помощью:
или так
2
|
![]() 3297 / 920 / 199
Регистрация: 14.01.2013
Сообщений: 4,586
|
|
14.11.2024, 18:25 [ТС] | |
Слева от разделителя всегда поле?
Тема получилась замечательная! Думаю, будет полезна всем, идущим нам вслед. Всем участникам большая спасиба! Но приз зрительских симпатий достаётся siberian-man. Думайте, что хотите. А мне, больше всего, нравится решение с awk. На мой взгляд, очень красивый вариант. Ещё и с описаловом - просто огонь!
0
|
![]() 6328 / 2169 / 340
Регистрация: 10.12.2013
Сообщений: 7,453
|
||||||
15.11.2024, 02:27 | ||||||
подаю официальный протест,
решение на основе split - это завсегда жёсткая привязка к позициям, что неспортивно. но даже если оставить как есть, perl тут может почти догнать awk по длине и не будет при этом привязан к позициям:
0
|
![]() 3297 / 920 / 199
Регистрация: 14.01.2013
Сообщений: 4,586
|
|
15.11.2024, 08:26 [ТС] | |
Это понятно. Но с awk красивее.
Этот "фломастер" показался мне более вкусным ![]() ![]()
0
|
![]() 6328 / 2169 / 340
Регистрация: 10.12.2013
Сообщений: 7,453
|
|
15.11.2024, 10:31 | |
Kubuntovod,
ну вот, приехали, я же с этого начал ( комментарии в столбик прямо в исходнике: Регуляр для bash/grep/sed/awk/perl ), а ты назвал это колхозом Добавлено через 26 минут awk...фломастеры.. Ставить кого-нибудь рядом с Perl в мире регулярных выражений - просто неприлично. Чтоб беседу поддержать, вот видео, где Дэмиан Конвэй показывает новую игрушку ( дело происходит в 2012 году ) Отладчик регулярных выражений. https://www.youtube.com/watch?v=zcSFIUiMgAs анимэ. (Но тут надо быть в теме и знать хотя бы про бэктрэкинг)
0
|
![]() 3297 / 920 / 199
Регистрация: 14.01.2013
Сообщений: 4,586
|
|
15.11.2024, 12:24 [ТС] | |
Там именно, что комментарии. А в 14 посту прям разжёвано.
Эт понятно. Но в данном случае, регуляр awk-а выглядит менее зубодробильно. А если знать нюансы (у меня нигде глаз не зацепился, в мануалах, что разделитель может быть списком разделителей и что "ничего и что-то" разделяется два поля), то регуляр вообще выглядит простым. Вполне допускаю, что и регуляр перла может быть понятен на беглый взгляд, но это только для тех, у кого синапсы закучерявились под него.
0
|
15.11.2024, 12:24 | ||||||
Помогаю со студенческими работами здесь
20
sed or awk Linux Grep и Sed awk, grep внешняя переменная Awk/sed с переменной
Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
На любовном киберфронте
Alexander-7 01.04.2025
Недавно на одном малоизвестном сайте знакомств мною заинтересовалась девушка:
«Текст немного странный. Но, судя по адресу почты, иностранка», – подумал я. Поколебавшись пару суток, я ответил ей:. . .
|
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
|
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
|
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
|
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
|
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
|
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
|
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
|
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
|
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations
рестрикции доступа на сервер sshd
статья:
https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
подробные расшифровки по. . .
|