The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Митрофаныч, ты где???"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Митрофаныч, ты где???"  +/
Сообщение от pavlinux (ok) on 12-Фев-12, 02:21 
Никак не вдуплю, на sed желательно....

Нужно в логе найти последнее вхождение подстроки..

Типа

[ 12.02.2012 15:01 ]: Маша мыла жопой раму, Миша жопой мыл балкон
[ 12.02.2012 15:05 ]: Маша мыла жопой раму, писька, Миша жопой мыл балкон
[ 12.02.2012 15:09 ]: Маша мыла жопой раму, Миша жопой мыл балкон
[ 12.02.2012 15:10 ]: Маша мыла жопой раму, писька, Миша жопой мыл балкон
[ 12.02.2012 15:11 ]: Маша мыла жопой раму, Миша жопой мыл балкон, пля
[ 12.02.2012 15:15 ]: Маша мыла жопой раму, Миша жопой мыл балкон
[ 12.02.2012 15:17 ]: Маша мыла жопой раму, Миша жопой мыл балкон, пля

Надо вывести только последние "пискька" и "пля"

[ 12.02.2012 15:10 ]: Маша мыла жопой раму, писька, Миша жопой мыл балкон
[ 12.02.2012 15:17 ]: Маша мыла жопой раму, Миша жопой мыл балкон, пля

---

Как вариант сделать реверс и найти первые вхождения, но блин, полтретьего, лениво думать... :)


Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Митрофаныч, ты где???"  +/
Сообщение от pavel_simple (ok) on 12-Фев-12, 09:51 
>[оверквотинг удален]
> [ 12.02.2012 15:17 ]: Маша мыла жопой раму, Миша жопой мыл балкон,
> пля
> Надо вывести только последние "пискька" и "пля"
> [ 12.02.2012 15:10 ]: Маша мыла жопой раму, писька, Миша жопой мыл
> балкон
> [ 12.02.2012 15:17 ]: Маша мыла жопой раму, Миша жопой мыл балкон,
> пля
> ---
> Как вариант сделать реверс и найти первые вхождения, но блин, полтретьего, лениво
> думать... :)

совсем ты павлин ахирел, митрофаныч только и ждёт как тебе в полтретьего чем-нибудь помочь.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Митрофаныч, ты где???"  +/
Сообщение от Пиздос on 12-Фев-12, 14:00 
> совсем ты павлин ахирел, митрофаныч только и ждёт как тебе в полтретьего
> чем-нибудь помочь.

А вдруг у него творческая бессонница


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

5. "Митрофаныч, ты где???"  +/
Сообщение от Andrey Mitrofanov on 16-Фев-12, 18:48 
>> совсем ты павлин ахирел, митрофаныч только и ждёт как тебе в полтретьего
>> чем-нибудь помочь.
> А вдруг у него творческая бессонница

Не-а. С такой :Q постановкой задачи, созрел "симметричный" ответ: логгер от поттеринга поставить -- он последнюю строчку лога в статусе сервиса показывает.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

3. "Митрофаныч, ты где???"  +/
Сообщение от awk_noob email on 16-Фев-12, 17:27 
> Никак не вдуплю, на sed желательно....
> Нужно в логе найти последнее вхождение подстроки..

ну если можете найти первое вхождение и вывести на печать, то можно попробывать сначала файл перевернуть. из однострочников тут же на опеннете
>sed -n '1!G;h;$p' 1.txt

з.ы. и работать до пол-третьего это тяжко

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Митрофаныч, ты где???"  +/
Сообщение от pavlinux (ok) on 16-Фев-12, 17:36 
>> Никак не вдуплю, на sed желательно....
>> Нужно в логе найти последнее вхождение подстроки..
> ну если можете найти первое вхождение и вывести на печать, то можно
> попробывать сначала файл перевернуть. из однострочников тут же на опеннете
>>sed -n '1!G;h;$p' 1.txt

Уже на авке сделал, но эту можно доделать..., быстрее наверно будет.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "Митрофаныч, ты где???"  +/
Сообщение от Andrey Mitrofanov on 16-Фев-12, 19:15 
>>>sed -n '1!G;h;$p' 1.txt
> Уже на авке сделал, но эту можно доделать..., быстрее наверно будет.

Не будет. //Весь 500Мб, скажем, лог в сед всосать -- ооооооочень долго.

man tac  - _Это _будет быстрее.
|tac |sed -n '/паттерн/{p;q}'   , если я правильно понял матершину~~~


PS: Хотя _не с файлом и tac притормозит, но по-любому быстрее в памяти sed-а~
$ time cat error.log.1| tac |head -1
2012/02/16 06:25:13 [notice] 2286#0: reopening logs

real    0m0.937s
$ time tac <error.log.1 |head -1
2012/02/16 06:25:13 [notice] 2286#0: reopening logs

real    0m0.002s
$ time cat error.log.1 |sed -n '/client/h;${g;p}'
2012/02/15 17:44:47 [info] 2286#0: *11656197 proxied session done, client: 10.1.4.190, server: 0.0.0.0:110, login: "client", upstream: 127.0.0.2:110

real    0m1.942s
$ time cat error.log.1 |tac |sed -n '/client/{p;q}'
2012/02/15 17:44:47 [info] 2286#0: *11656197 proxied session done, client: 10.1.4.190, server: 0.0.0.0:110, login: "client", upstream: 127.0.0.2:110

real    0m1.859s
$ wc -cl error.log.1
  2848712 373326051 error.log.1


PPS:
$ time seq 1 40000| sed -n '1!G;h;$p' >/dev/null

real    0m1.594s
$ time seq 1 40000| tac >/dev/null

real    0m0.039s

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Митрофаныч, ты где???"  +/
Сообщение от pavlinux (ok) on 22-Фев-12, 03:43 
>>>>sed -n '1!G;h;$p' 1.txt
>> Уже на авке сделал, но эту можно доделать..., быстрее наверно будет.
> Не будет. //Весь 500Мб, скажем, лог в сед всосать -- ооооооочень долго.


cat text.txt | sed -n '/пля/{p;d;}' | sed  '1!G;h;$!d' | sed q

Соединить в одно выражение никак не получается :(

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "где, где... на работЕ."  +/
Сообщение от Andrey Mitrofanov on 22-Фев-12, 09:23 
>>> Уже на авке сделал, но эту можно доделать..., быстрее наверно будет.

Ещё раз: быстрее будет _только_ с tac-ом, а чего там 1 строчку выведет, без разницы. Хоть 'fgrep -m1' (вот тебе, кстати, ещё подарочек, да).

>> Не будет. //Весь 500Мб, скажем, лог в сед всосать -- ооооооочень долго.
> Соединить в одно выражение никак не получается :(

??! Пьян чтоле всё ещё? :-P [Прям завидно~] 'man sed' до прояснения в уму. В смысле прочитай то заклинание и ужаснись. Перечитай _все, что я тебе накидал, посмотри почему они все медленне tac, почему "то заклинание" медленне и совершенно не то делает.

...
cat text.txt |tac |sed -n '/подруга/{p;q}'
cat text.txt |tac |fgrep -m1 'подруга'

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру