|
Командой sed отобрать из ТЖ нужные данные | ☑ | ||
|---|---|---|---|---|
|
0
DoctorRoza
07.07.24
✎
17:36
|
Здравствуйте, коллеги.
Можете подсказать, есть данные ТЖ, из них нужно отобрать требуемые данные. Не получается написать верное регулярное выражение. Пишу в bash, так (пример упрощенный, по факту имею данные события ТЖ, ADMIN): $ echo rphost_13556/24070415.log:08:52.586002-0,ADMIN,4,process=rphost--999 | sed 's/\(\/.+-\)/\1/' Не отбирает нужное, а требуется вычленить данные между / и -. Можно, конечно, выкусывать по частям, заменяя лишние данные на пробелы и т.п., но хочу сделать через обратные ссылки. |
|||
|
1
DoctorRoza
07.07.24
✎
17:38
|
$ echo rphost_13556/24070415.log:08:52.586002-0,ADMIN,4,process=rphost--999 | sed -r 's/(\/.+-)/\1/'
так тоже не отрабатывает |
|||
|
2
kvk
07.07.24
✎
23:50
|
https://stackoverflow.com/questions/1103149/non-greedy-reluctant-regex-matching-in-sed Пишут, что никак из-за "--999"
|
|||
|
3
kvk
07.07.24
✎
23:52
|
Если только 's/(\/.+-\d,)' как-то задействовать.
|
|||
|
4
vbus
08.07.24
✎
08:11
|
echo "rphost_13556/24070415.log:08:52.586002-0,ADMIN,4,process=rphost--999" | awk -F'/' '{split($2, a, "-"); print a[1]}'
24070415.log:08:52.586002 |
|||
|
7
DoctorRoza
08.07.24
✎
11:05
|
Для grep'а можно задействовать ленивый квантор:
((?<=\/).+(?=-\d,)) Но в sed нет кванторов((( |
|||
|
8
DoctorRoza
08.07.24
✎
11:17
|
(4) спасибо за пример. До awk только добрался для изучения
|
|||
|
9
vbus
08.07.24
✎
11:24
|
awk -F'/' '{split($2, a, "-"); print a[1]}'
Входящую строку делим по разделителю "/" (-F'/') получается две строки $1,$2 $1="rphost_13556" $2="24070415.log:08:52.586002-0,ADMIN,4,process=rphost--999" Строку $2 делим по разделителю "-" Помещаем в массив "a" Печатаем первый элемент "a[1]" |
|||
|
10
Timon1405
08.07.24
✎
12:07
|
грепом можно оставить совпадения с ленивым квантификатором , а потом убрать лишнее. чем проще выражения тем легче их поддерживать.
echo rphost_13556/24070415.log:08:52.586002-0,ADMIN,4,process=rphost--999 | grep -oP '\/.+?-' | sed 's/[-|\/]//g' |
| Форум | Правила | Описание | Секции | Поиск |