Нужна помощь с sed

Alex Emergy alex.emergy на gmail.com
Вт Фев 28 20:15:29 UTC 2012


Может я что-то не понял, но можно тогда пример, без скрипта, что есть и 
что должно быть на выходе?

alexemergy на stub:~$ cat test

$ ls -1 /home/motion/CamRecords/ipcam01|head
01-20120207104003.avi
01-20120207104004-04.jpg
01-2012-02-07_12-25-26.avi
01-20120207122620-03.jpg
02-2012-02-07_12-29-38.avi
02-20120207122939-03.jpg
03-2012-02-07_12-31-13.avi
03-20120207123115-00.jpg
04-2012-02-07_12-32-30.avi
04-20120207123232-00.jpg

$ ls -1 /home/motion/CamRecords/ipcam01|tail
2012-02-28_19-05-55-event-24.avi
2012-02-28_19-06-22-03-event-24.jpg
2012-02-28_19-09-03-event-25.avi
2012-02-28_19-09-16-02-event-25.jpg
2012-02-28_19-12-26-event-26.avi
2012-02-28_19-13-32-00-event-26.jpg
2012-02-28_19-15-48-event-27.avi
2012-02-28_19-15-50-00-event-27.jpg
2012-02-28_19-18-45-event-28.avi
Thumbs.db
alexemergy на stub:~$ cat test|perl -nE 'say $1 if/(\d{4}-\d{2}-\d{2})/'
2012-02-07
2012-02-07
2012-02-07
2012-02-07
2012-02-28
2012-02-28
2012-02-28
2012-02-28
2012-02-28
2012-02-28
2012-02-28
2012-02-28
2012-02-28

Tue Feb 28 20:07:02 2012, Тарас Перебейносов писал:
> Вставил костылик в виде grep. В конце выводится пустая строка. Не знаю 
> откуда она берется, но как это нее избавиться?
>
>
> folder1="/home/motion/CamRecords/ipcam01"
> folder2="/home/motion/CamRecords/ipcam02"
>
> cd $folder1
> ls -1 | while read file
> do
>         # 2012-02-28_18-08-40-04-event-04.jpg
>         # 2012-02-28_18-09-45-event-05.avi
>         folderName=$(echo $file |  grep -Pe 
> '^[0-9]{4}-[0-9]{2}-[0-9]{2}' | sed -re 
> 's/^([0-9]{4}-[0-9]{2}-[0-9]{2})_.+/\1/')
>         if [ "$folderName_old" != "$folderName" ]
>         then
>                 echo $folderName
>         fi
>         folderName_old=$folderName
> done
>
>
> 28 февраля 2012 г. 19:27 пользователь Тарас Перебейносов 
> <taras.perebeynosov на gmail.com <mailto:taras.perebeynosov на gmail.com>> 
> написал:
>
>     Доброго времени суток!
>
>     Помогите, пожалуйста, разобраться с регулярными выражениями в sed.
>     Я пытаюсь написать скрипт, который будет ежедневно складывать в
>     папочки по датам файлы:
>
>     $ *ls -1 /home/motion/CamRecords/ipcam01|head*
>     01-20120207104003.avi
>     01-20120207104004-04.jpg
>     01-2012-02-07_12-25-26.avi
>     01-20120207122620-03.jpg
>     02-2012-02-07_12-29-38.avi
>     02-20120207122939-03.jpg
>     03-2012-02-07_12-31-13.avi
>     03-20120207123115-00.jpg
>     04-2012-02-07_12-32-30.avi
>     04-20120207123232-00.jpg
>
>     $ *ls -1 /home/motion/CamRecords/ipcam01|tail*
>     2012-02-28_19-05-55-event-24.avi
>     2012-02-28_19-06-22-03-event-24.jpg
>     2012-02-28_19-09-03-event-25.avi
>     2012-02-28_19-09-16-02-event-25.jpg
>     2012-02-28_19-12-26-event-26.avi
>     2012-02-28_19-13-32-00-event-26.jpg
>     2012-02-28_19-15-48-event-27.avi
>     2012-02-28_19-15-50-00-event-27.jpg
>     2012-02-28_19-18-45-event-28.avi
>     Thumbs.db
>
>     Вот набросок разбора имен:
>
>     #!/bin/bash
>
>     folder1="/home/motion/CamRecords/ipcam01"
>     folder2="/home/motion/CamRecords/ipcam02"
>
>     cd $folder1
>     ls -1 | while read file
>     do
>             # 2012-02-28_18-08-40-04-event-04.jpg
>             # 2012-02-28_18-09-45-event-05.avi
>             folderName=$(echo $file|*sed -re
>     's/([0-9]{4}-[0-9]{2}-[0-9]{2})_.+/\1/'*)
>             if [ "$folderName_old" != "$folderName" ]
>             then
>                     echo $folderName
>             fi
>             folderName_old=$folderName
>     done
>
>     Я ожидал, что скрипт выведет мне имена для папок, которые нужно
>     создать. Но выводится также и мусор (то, что не подходит под
>     шаблон <YYYY-MM-DD>).
>
>     $ *./folderOrder.sh |head*
>     01-20120207104003.avi
>     01-20120207104004-04.jpg
>     01-2012-02-07
>     01-20120207122620-03.jpg
>     02-2012-02-07
>     02-20120207122939-03.jpg
>     03-2012-02-07
>     03-20120207123115-00.jpg
>     04-2012-02-07
>     04-20120207123232-00.jpg
>
>     $ *./folderOrder.sh |tail*
>     2012-02-20
>     2012-02-21
>     2012-02-22
>     2012-02-23
>     2012-02-24
>     2012-02-25
>     2012-02-26
>     2012-02-27
>     2012-02-28
>     Thumbs.db
>
>     Как убрать из вывода строки, которые не совпадают с шаблоном
>     <YYYY-MM-DD> ?
>
>
>
>

-- 
Alex Emergy



Подробная информация о списке рассылки ubuntu-ru