The OpenNET Project / Index page

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

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

"Выделить дату из имени файла"  
Сообщение от A.Undegro email on 18-Дек-07, 09:26 
Уважаемые!!!
Пишу на shell скрипт который экспортирует тучу файлов в бд;
Файлы вида "ft-v05.2007-12-12.235500+0500" (netflow);
Нужно из имени файла в переменную $date выделить дату чтоб получилось
$date='2007-12-12';
Я так полагаю что делать это нужно через "expr $date : 'regexp'"
но с регвыражениями у меня туговато (пока).
Как это можно сделать? Заранее спасибо!!!
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

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


1. "Выделить дату из имени файла"  
Сообщение от AMDmi3 (??) on 18-Дек-07, 09:59 
>но с регвыражениями у меня туговато (пока).
>Как это можно сделать? Заранее спасибо!!!

...
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-12

3 место занимает опять таки 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-12

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Выделить дату из имени файла"  
Сообщение от A.Undegro email on 18-Дек-07, 10:04 
ОГРОМНЕЙШЕЕ СПАСИБО БУМ ПРОБОВАТЬ!!!!
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Выделить дату из имени файла"  
Сообщение от Аноним on 19-Дек-07, 03:31 
Угу :)

Только перед тем как это применять проверь с датами чтобы день или месяц были менее 10.
Если генерится 2007-07-07 работать будет. Если 2007-7-7 (привеД вантузятнеГам! :) - нет ...

GR.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Выделить дату из имени файла"  
Сообщение от A.Undegro email on 19-Дек-07, 07:18 
>Угу :)
>
>Только перед тем как это применять проверь с датами чтобы день или
>месяц были менее 10.
>Если генерится 2007-07-07 работать будет. Если 2007-7-7 (привеД вантузятнеГам! :) - нет
>...
>
>GR.

Net flow в нормальном формате к счастью делает т/е/ с нулями!!! Скрипт уже написан и робит! Всем спасибо за ответы!!!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Выделить дату из имени файла"  
Сообщение от Гость on 19-Дек-07, 08:54 
>Если генерится 2007-07-07 работать будет. Если 2007-7-7 (привеД вантузятнеГам! :)

Эм, есть софт, который так делает?!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Выделить дату из имени файла"  
Сообщение от L0n3R4ng3r (ok) on 10-Янв-08, 16:31 
>[оверквотинг удален]
>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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Выделить дату из имени файла"  
Сообщение от Slimm (??) on 25-Дек-07, 16:41 
>Уважаемые!!!
>Пишу на shell скрипт который экспортирует тучу файлов в бд;
>Файлы вида "ft-v05.2007-12-12.235500+0500" (netflow);
>Нужно из имени файла в переменную $date выделить дату чтоб получилось
>$date='2007-12-12';
>Я так полагаю что делать это нужно через "expr $date : 'regexp'"
>
>но с регвыражениями у меня туговато (пока).
>Как это можно сделать? Заранее спасибо!!!

а разве в данных netflow нету даты???

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Выделить дату из имени файла"  
Сообщение от stas (??) on 23-Янв-08, 14:52 
>Уважаемые!!!
>Пишу на 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.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Выделить дату из имени файла"  
Сообщение от stas (??) on 24-Янв-08, 16:45 
>[оверквотинг удален]
>>но с регвыражениями у меня туговато (пока).
>>Как это можно сделать? Заранее спасибо!!!
>
>Можно так:
>
>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]}

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Выделить дату из имени файла"  
Сообщение от Аноним on 24-Янв-08, 18:16 
Башизмы лучше вообще не использовать.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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