Страница 1 из 1
Помогите пожалуйста с sed'ом
Добавлено: 06 май 2012, 14:56
SolarW
Здравствуйте.
Пытаясь реализовать у себя вот
этот мануал уперся в преобразование строк sed'ом.
В оригинале выражение
Код: Выделить всё
28.04.2012 04:30:29 - USSD - 000105: Баланс 393.08 р. iPhone в офисах Билайн от 16 590 р. Инф 068006
превращается в
командой вида
Код: Выделить всё
sed -E 's/( - |: Баланс | р.)/;/g' | sed 's/,/./g' | awk -F ";" '{print $1";"$4";"$3}'
Но у автора статьи Ubuntu а у меня CentOS (Elastix).
И в нем почему-то принципиально не работают параметры для sed'а содержащие двоеточия...
Отсюда вопрос: помогите подобрать параметры для sed'а чтобы в строке
Код: Выделить всё
05.05.2012 22:09:10 - USSD - dongle1: Na rahunku: 145.97 grn. Info pro bonusy na *112# i *119#. Nomer die do 04/05/13
заменить на точку с запятой следующие подстроки:
" - " - это получилось
" grn." - и это получилось
": Na rahunku: " - а вот это никак не могу осилить, выдает ошибку
Код: Выделить всё
sed: -e выражение #1, символ 11: неизвестный модификатор к `s'
Ну и набор параметров внутри круглых скобок задать не выходит - они там разъединены расширенным двоеточием а оно похоже как разделитель команд срабатывает...
Re: Помогите пожалуйста с sed'ом
Добавлено: 06 май 2012, 15:32
Vlad1983
не -E, а -e
Код: Выделить всё
echo "05.05.2012 22:09:10 - USSD - dongle1: Na rahunku: 145.97 grn. Info pro bonusy na *112# i *119#. Nomer die do 04/05/13" \
> | sed -e 's/: Na rahunku: /;/' | sed -e 's/ - /;/g' | sed -e 's/ grn. /;/'
05.05.2012 22:09:10;USSD;dongle1;145.97;Info pro bonusy na *112# i *119#. Nomer die do 04/05/13
без параметров результат тот же
Код: Выделить всё
echo "05.05.2012 22:09:10 - USSD - dongle1: Na rahunku: 145.97 grn. Info pro bonusy na *112# i *119#. Nomer die do 04/05/13" > test
sed 's/: Na rahunku: /;/' test | sed 's/ - /;/g' | sed 's/ grn. /;/'
05.05.2012 22:09:10;USSD;dongle1;145.97;Info pro bonusy na *112# i *119#. Nomer die do 04/05/13
или -r
Код: Выделить всё
echo "05.05.2012 22:09:10 - USSD - dongle1: Na rahunku: 145.97 grn. Info pro bonusy na *112# i *119#. Nomer die do 04/05/13" > test
sed -r 's/(: Na rahunku: | - | grn. )/;/g' test
05.05.2012 22:09:10;USSD;dongle1;145.97;Info pro bonusy na *112# i *119#. Nomer die do 04/05/13
Re: Помогите пожалуйста с sed'ом
Добавлено: 06 май 2012, 17:05
SolarW
Огромнейшее спасибо.
Сравнил первый вариант с тем, что у меня не работало - увидел где неправильно пробелы поставил.
Ну и второй вариант тоже красивый - пробовал несколько аргументов задавать в круглых скобках но не знал что совместно с таким написанием надо -r использовать, прочел в хелпе что
Код: Выделить всё
-r, --regexp-extended
использование в скрипте расширенных регулярных выражений.
и подумал что этот ключ к регэкспам типа "слово начинается с ..." или "слово содержит ..." относится.
Еще раз большое спасибо.
Re: Помогите пожалуйста с sed'ом
Добавлено: 06 май 2012, 17:53
Vlad1983
Код: Выделить всё
sed -r 's/: Na rahunku: | - | grn. /;/g' test
так тоже работает, т.е. круглые скобки лишние
метасимволы, используемые в регулярных выражениях, так же действуют
Re: Помогите пожалуйста с sed'ом
Добавлено: 07 май 2012, 01:16
SolarW
Спасибо за мануал, занес в закладки.
Скрипт все-таки странный - из командной строки работает нормально а из крона не отрабатываются sql-запросы с выборкой данных.
Те, которыми база заполняется работают а те, где выборка из базы и занесение результата в файл - нифига.
Уже всю голову поломал...
Re: Помогите пожалуйста с sed'ом
Добавлено: 07 май 2012, 08:13
SolarW
Это все я попробовал.
Перенаправление вывода скрипта в файл в задании крона стоит - ничего критичного в выводе нет.
Почту читал - там тоже самое что и в файле вывода.
Лог ошибок MYSQL-сервера включил - пусто (сейчас пишу и подозреваю что надо другого компонента логирование включить, клиента наверное)
Проверил чтобы переменная PATH была одинаковая как для юзера root так и для заданий cron'а.
Прописал команду mysql с полными путями (да и вообще все файлы с путями указал).
Результат все тот же - mysql-запрос который базу заполняет работает а который делает выборку из базы и заносит ее в текстовые файлики - нифига, в файлы ничего не записывается.
В проблеме я не одинок - гугл выдал топик на форуме с такой же проблемой
http://forum.sysadmins.su/index.php?showtopic=3516
но решения там нет.
Re: Помогите пожалуйста с sed'ом
Добавлено: 07 май 2012, 09:43
SolarW
Поскольку второй вопрос к sed'у отношения не имеет - создал по нему второй топик.
http://forum.asterisk.ru/viewtopic.php?f=11&t=1668