Уважаемые!!!
Пишу на shell скрипт который экспортирует тучу файлов в бд;
Файлы вида "ft-v05.2007-12-12.235500+0500" (netflow);
Нужно из имени файла в переменную $date выделить дату чтоб получилось
$date='2007-12-12';
Я так полагаю что делать это нужно через "expr $date : 'regexp'"
но с регвыражениями у меня туговато (пока).
Как это можно сделать? Заранее спасибо!!!
>но с регвыражениями у меня туговато (пока).
>Как это можно сделать? Заранее спасибо!!!...
4 место занимает дубовый вариант с sed и basic regular expressions% echo ft-v05.2007-12-12.235500+0500 | sed -e 's|.*\([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\).*|\1|'
2007-12-123 место занимает опять таки sed с extended regular expressions
% echo ft-v05.2007-12-12.235500+0500 | sed -Ee 's|.*([0-9]{4}-[0-9]{2}-[0-9]{2}).*|\1|'
2007-12-122 место занимает grep -o с extended regexp (но вроде на некоторых системах grep -o не работает)
% echo ft-v05.2007-12-12.235500+0500 | grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}'
2007-12-12наконец, сегодняшний победитель - cut. Вообще без регулярных выражений
% echo ft-v05.2007-12-12.235500+0500 | cut -b 8-17
2007-12-12
ОГРОМНЕЙШЕЕ СПАСИБО БУМ ПРОБОВАТЬ!!!!
Угу :)Только перед тем как это применять проверь с датами чтобы день или месяц были менее 10.
Если генерится 2007-07-07 работать будет. Если 2007-7-7 (привеД вантузятнеГам! :) - нет ...GR.
>Угу :)
>
>Только перед тем как это применять проверь с датами чтобы день или
>месяц были менее 10.
>Если генерится 2007-07-07 работать будет. Если 2007-7-7 (привеД вантузятнеГам! :) - нет
>...
>
>GR.Net flow в нормальном формате к счастью делает т/е/ с нулями!!! Скрипт уже написан и робит! Всем спасибо за ответы!!!
>Если генерится 2007-07-07 работать будет. Если 2007-7-7 (привеД вантузятнеГам! :)Эм, есть софт, который так делает?!
>[оверквотинг удален]
>2 место занимает grep -o с extended regexp (но вроде на некоторых
>системах grep -o не работает)
>
>% echo ft-v05.2007-12-12.235500+0500 | grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}'
>2007-12-12
>
>наконец, сегодняшний победитель - cut. Вообще без регулярных выражений
>
>% echo ft-v05.2007-12-12.235500+0500 | cut -b 8-17
>2007-12-12а как же awk тоже между прочим без регекспов
echo ft-v05.2007-12-12.235500+0500 | awk -F. '{print $2}'
2007-12-12
>Уважаемые!!!
>Пишу на shell скрипт который экспортирует тучу файлов в бд;
>Файлы вида "ft-v05.2007-12-12.235500+0500" (netflow);
>Нужно из имени файла в переменную $date выделить дату чтоб получилось
>$date='2007-12-12';
>Я так полагаю что делать это нужно через "expr $date : 'regexp'"
>
>но с регвыражениями у меня туговато (пока).
>Как это можно сделать? Заранее спасибо!!!а разве в данных netflow нету даты???
>Уважаемые!!!
>Пишу на shell скрипт который экспортирует тучу файлов в бд;
>Файлы вида "ft-v05.2007-12-12.235500+0500" (netflow);
>Нужно из имени файла в переменную $date выделить дату чтоб получилось
>$date='2007-12-12';
>Я так полагаю что делать это нужно через "expr $date : 'regexp'"
>
>но с регвыражениями у меня туговато (пока).
>Как это можно сделать? Заранее спасибо!!!Можно так:
FILE="ft-v05.2007-12-12.235500+0500"
PARAMS=${FILE/./ }
DATE=${PARAM[1]}если ничего не напутал. Под рукой сейчас нет bash.
>[оверквотинг удален]
>>но с регвыражениями у меня туговато (пока).
>>Как это можно сделать? Заранее спасибо!!!
>
>Можно так:
>
>FILE="ft-v05.2007-12-12.235500+0500"
>PARAMS=${FILE/./ }
>DATE=${PARAM[1]}
>
>если ничего не напутал. Под рукой сейчас нет bash.Ошибка вышла. Надо так:
FILE="ft-v05.2007-12-12.235500+0500"
PARAMS=(${FILE//./ })
DATE=${PARAMS[1]}
Башизмы лучше вообще не использовать.