LinuxForum.Fans
Тема

регулярные выражения

Автор: Aspedin 6 сообщений 1796 просмотров
#160876

Как с помощью стандартных средств linux вытащить из строки:

text

2011-05-11 22:54:50 [JID@server.ru] сообщение какое-то

JID(т.е. то что в [] без [] естественно) и тест сообщения ("сообщение какое-то") длинна JID может быть различной, в сообщении могут быть пробелы.

#160911

это можно сделать sed'ом... как именно - гуглите или ждите кого-то, кто знает как с ним обращаться...

#160932

[console]$ STR="2011-05-11 22:54:50 [JID@server.ru] сообщение какое-то"; STR1=${STR#*\[}; STR2=${STR#*"] "}
$ echo ${STR1%\]*} #вот JID
JID@server.ru
$ echo $STR2 #вот сообщение
сообщение какое-то[/console]

#161520
Aspedin написал:
2011-05-11 22:54:50 [JID@server.ru] сообщение какое-то

[console]ksu@ksu:~$ echo "2011-05-11 22:54:50 [JID@server.ru] сообщение какое-то" | sed -r 's/.*\[([^]]*)\].*/\1/'
JID@server.ru
ksu@ksu:~$ echo "2011-05-11 22:54:50 [JID@server.ru] сообщение какое-то" | sed -r 's/.*\]//'
сообщение какое-то
[/console]

#161521

правильнее так:
[console]$ echo "2011-05-11 22:54:50 [JID@server.ru] сообщение какое-то" | sed -r 's/.*\[([^]]*)\]/\1\n/;h;s/\n.*//p;g;s/.*\n//'
JID@server.ru
сообщение какое-то
[/console]

#163173

Спасибо, то что надо

Войдите или зарегистрируйтесь, чтобы ответить.