3281 / 892 / 196
Регистрация: 14.01.2013
Сообщений: 4,451
|
|
1 | |
Регуляр для bash/grep/sed/awk/perl13.11.2024, 14:28. Показов 1140. Ответов 29
Имеется текст такого вида
Код
[29599:1545281] -A Bla_122_123_PREROUTING -d 123.123.123.121/32 -p tcp -m tcp --dport 3332 -j DNAT --to-destination 192.168.0.33 [102155:9816402] -A Bla_122_123_PREROUTING -d 123.123.123.121/32 -p udp -m udp --dport 3332 -j DNAT --to-destination 192.168.0.33 [34828:1815944] -A Bla_122_123_PREROUTING -d 123.123.123.123/32 -p tcp -m tcp --dport 3333 -j DNAT --to-destination 192.168.0.37 [6060:601079] -A Bla_122_123_PREROUTING -d 123.123.123.123/32 -p udp -m udp --dport 3333 -j DNAT --to-destination 192.168.0.37 [37841:1971064] -A Bla_122_123_PREROUTING -d 123.123.123.125/32 -p tcp -m tcp --dport 3334 -j DNAT --to-destination 192.168.0.41 [24203:2336906] -A Bla_122_123_PREROUTING -d 123.123.123.125/32 -p udp -m udp --dport 3334 -j DNAT --to-destination 192.168.0.41 [9315:488572] -A Bla_122_123_PREROUTING -d 123.123.123.127/32 -p tcp -m tcp --dport 3335 -j DNAT --to-destination 192.168.0.45 [133063:12779428] -A Bla_122_123_PREROUTING -d 123.123.123.127/32 -p udp -m udp --dport 3335 -j DNAT --to-destination 192.168.0.45 [779:44092] -A Bla_122_123_PREROUTING -d 123.123.123.129/32 -p tcp -m tcp --dport 3336 -j DNAT --to-destination 192.168.0.49 [0:0] -A Bla_122_123_PREROUTING -d 123.123.123.139/32 -p udp -m udp --dport 3336 -j DNAT --to-destination 192.168.0.49 [1079:58799] -A Bla_122_123_PREROUTING -d 123.123.123.131/32 -p tcp -m tcp --dport 3337 -j DNAT --to-destination 192.168.0.53 [9:1387] -A Bla_122_123_PREROUTING -d 123.123.123.131/32 -p udp -m udp --dport 3337 -j DNAT --to-destination 192.168.0.53 Код
1545281 123.123.123.123
0
|
13.11.2024, 14:28 | |
Ответы с готовыми решениями:
29
Поиск длинного слова используя grep, sed или awk Bash, как в awk передать переменную из bash Тройное условие для регулярного выражения на bash c использованием grep sed or awk Linux Grep и Sed |
Невнимательный
|
|
13.11.2024, 15:03 | 2 |
как вариант
Код
perl -nE "!/\[\d+:(\d{2,}).*?-d\h*\K[.0-9]+/ || say $1.' '.$&" "./test.txt" 1545281 123.123.123.121 9816402 123.123.123.121 1815944 123.123.123.123 601079 123.123.123.123 1971064 123.123.123.125 2336906 123.123.123.125 488572 123.123.123.127 12779428 123.123.123.127 44092 123.123.123.129 58799 123.123.123.131 1387 123.123.123.131 Добавлено через 2 минуты оптимальнее -nE "!/^\[\d+:...
0
|
317 / 189 / 18
Регистрация: 27.07.2018
Сообщений: 874
|
|
13.11.2024, 16:06 | 3 |
ft4l,
а если там будет 1:1, а не 0:0? не хорошо по количеству символов чекать.
1
|
6302 / 2144 / 337
Регистрация: 10.12.2013
Сообщений: 7,387
|
|||||||||||
13.11.2024, 17:30 | 4 | ||||||||||
myproc
1
|
|
13.11.2024, 17:37
#6
|
Не по теме:
0
|
6302 / 2144 / 337
Регистрация: 10.12.2013
Сообщений: 7,387
|
|
13.11.2024, 17:42 | 7 |
Eddy_Em,
Эдуард, страшный патч Бармина - это просто шутка с оператором tr ( Translate одну букву в другую )
0
|
321 / 46 / 11
Регистрация: 08.04.2022
Сообщений: 176
|
||||||
14.11.2024, 01:02 | 8 | |||||
зубодробительно на awk:
0
|
3281 / 892 / 196
Регистрация: 14.01.2013
Сообщений: 4,451
|
||||||
14.11.2024, 06:52 [ТС] | 9 | |||||
Это великолепно! Пойду тереть зубы, чтобы вникнуть, как оно работает.
Не бывает. Но не взлетело.
Но в незабываемые впечатления от регуляров она умеет Добавлено через 1 минуту Файл сколхозить, конечно, можно. Но желательно на лету, одной строкой.
0
|
321 / 46 / 11
Регистрация: 08.04.2022
Сообщений: 176
|
||||||
14.11.2024, 10:02 | 10 | |||||
что фраза точно поразумевает
а) второе поле не должно быть 0 б) второе поле не должно содержать 0 Мой первый вариант подразумевает вариант а). Если надо решить вариант б), то зубы дробить так:
0
|
Невнимательный
|
||||||
14.11.2024, 14:25 | 11 | |||||
С виндовыми кавычками потомучто
но у меня bash
0
|
6302 / 2144 / 337
Регистрация: 10.12.2013
Сообщений: 7,387
|
||||||
14.11.2024, 14:28 | 12 | |||||
дожил.
колхозником назвали. и это, заметьте, за развертывание regex в идиоматическую вертикаль с комментами и удобной правкой фрагментов, ежели чо.
0
|
3281 / 892 / 196
Регистрация: 14.01.2013
Сообщений: 4,451
|
|
14.11.2024, 15:07 [ТС] | 13 |
И это именно то, что доктор прописал. Спасибо.
Лучше написать, что за зубная пыль содержится здесь: Перебрал несколько мануалов, нигде не нашёл развёрнутого варианта. Везде про разделитель пишут. Но, тут явно нечто большее Да. Этот вариант сработал. Да это ж выражение такое. К колхозникам не имеет отношения Работает! Но вот этот, самый изящный вариант:
0
|
321 / 46 / 11
Регистрация: 08.04.2022
Сообщений: 176
|
|||||||||||||||||||||
14.11.2024, 16:43 | 14 | ||||||||||||||||||||
Сообщение было отмечено Kubuntovod как решение
РешениеКод
'[\\[\\]:/]|[ \\s]+' Код
'[\\[\\]:/]|[ \\t]+'
-F устанавливает пользовательский разделитель полей. А он у нас регулярно выраженный. И разделитель может быть один из:* [\\[\\]:/] - разделилетелем может быть один из символов левая квадратная скобка \\[ , правая квадратная скобка \\] , жвоеточие : или прямой слеш/ * или [ \\t]+ - группа пробельных символов (любая комбинация пробелов и символов табуляции \\t )А теперь несколько слов откуда частокол обратных слешей \\ . Дело в том, что внешние квадратные скобки - это часть синтаксиса регекспов, который говорит: "это список чего-то". Но в этот список входят сами скобки. И поэтому, чтобы правильно интерпретировать их как простые символы, их надо экранировать. Но в последних своих версиях GNU Awk сильно ругается:
Давай посмотрим, что же у нас получится. Вот первая строка из примера (обрезал остаток строки): Код
[29599:1545281] -A Bla_122_123_PREROUTING -d 123.123.123.121/32 ... Код
$1 - первое поле (пустая строка) [ - разделитель $2 = 29599 : - разделитель $3 = 1545281 ] - разделитель $4 = 4-ое поле (пустая строка, потому что мы так решили: разделитель это один символ из списка или пробельные символы) пробел - разделитель $5 = -A пробел - разделитель $6 = Bla_122_123_PREROUTING пробел - разделитель $7 = -d пробел - разделитель $8 = 123.123.123.121 / - разделитель $9 = 32 и т.д. Добавлено через 20 минут Ну раз я упомянул perl, то вот мое видение решения с его помощью:
или так
2
|
3281 / 892 / 196
Регистрация: 14.01.2013
Сообщений: 4,451
|
|
14.11.2024, 18:25 [ТС] | 15 |
Слева от разделителя всегда поле?
Тема получилась замечательная! Думаю, будет полезна всем, идущим нам вслед. Всем участникам большая спасиба! Но приз зрительских симпатий достаётся siberian-man. Думайте, что хотите. А мне, больше всего, нравится решение с awk. На мой взгляд, очень красивый вариант. Ещё и с описаловом - просто огонь!
0
|
321 / 46 / 11
Регистрация: 08.04.2022
Сообщений: 176
|
|
14.11.2024, 19:40 | 16 |
Зависит от используемого средства. В данных примерах - да.
Спасибо ))) Мои последние примеры на perl - аналоги того решения на awk.
0
|
6302 / 2144 / 337
Регистрация: 10.12.2013
Сообщений: 7,387
|
||||||
15.11.2024, 02:27 | 17 | |||||
подаю официальный протест,
решение на основе split - это завсегда жёсткая привязка к позициям, что неспортивно. но даже если оставить как есть, perl тут может почти догнать awk по длине и не будет при этом привязан к позициям:
0
|
3281 / 892 / 196
Регистрация: 14.01.2013
Сообщений: 4,451
|
|
15.11.2024, 08:26 [ТС] | 18 |
Это понятно. Но с awk красивее.
Этот "фломастер" показался мне более вкусным А спорт остаётся молодым. В любом случае, в теме присутствует и так и сяк. И это прекрасно. Хотя ... До идеала чуть чуть не дотягивает. Вот если повторить трюк с описанием, но для перла, то эти акробатические этюды станут на шаг ближе к народу
0
|
6302 / 2144 / 337
Регистрация: 10.12.2013
Сообщений: 7,387
|
|
15.11.2024, 10:31 | 19 |
Kubuntovod,
ну вот, приехали, я же с этого начал ( комментарии в столбик прямо в исходнике: Регуляр для bash/grep/sed/awk/perl ), а ты назвал это колхозом Добавлено через 26 минут awk...фломастеры.. Ставить кого-нибудь рядом с Perl в мире регулярных выражений - просто неприлично. Чтоб беседу поддержать, вот видео, где Дэмиан Конвэй показывает новую игрушку ( дело происходит в 2012 году ) Отладчик регулярных выражений. https://www.youtube.com/watch?v=zcSFIUiMgAs анимэ. (Но тут надо быть в теме и знать хотя бы про бэктрэкинг)
0
|
3281 / 892 / 196
Регистрация: 14.01.2013
Сообщений: 4,451
|
|
15.11.2024, 12:24 [ТС] | 20 |
Там именно, что комментарии. А в 14 посту прям разжёвано.
Эт понятно. Но в данном случае, регуляр awk-а выглядит менее зубодробильно. А если знать нюансы (у меня нигде глаз не зацепился, в мануалах, что разделитель может быть списком разделителей и что "ничего и что-то" разделяется два поля), то регуляр вообще выглядит простым. Вполне допускаю, что и регуляр перла может быть понятен на беглый взгляд, но это только для тех, у кого синапсы закучерявились под него.
0
|
15.11.2024, 12:24 | |
15.11.2024, 12:24 | |
Помогаю со студенческими работами здесь
20
awk, grep внешняя переменная Awk/sed с переменной Не работает регулярное выражение в AWK и GREP Awk/sed считать строки от конца Вырезать строку между 2 позициями с помощью sed и awk Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
|
UserScript для подсветки кнопок языков программирования в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения:
/ / ==UserScript==
/ / @name CF_DefaultLangSelect
/ / . . .
|
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
|
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
|
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
|
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
|
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей
Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
|
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
|
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
|
Python в машинном обучении
InfoMaster 12.01.2025
Python стал неотъемлемой частью современного машинного обучения, завоевав позицию ведущего языка программирования в этой области. Его популярность обусловлена несколькими ключевыми факторами, которые. . .
|
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
|
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке
В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
|