Re: Нужна помощь с sed
или может так надо? alexemergy@stub:~$ cat test|grep -Eo '[0-9]{4}-[0-9]{2}-[0-9]{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 Wed Feb 29 00:15:29 2012, Alex Emergy писал: Может я что-то не понял, но можно тогда пример, без скрипта, что есть и что должно быть на выходе? 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 пользователь Тарас Перебейносов mailto:taras.perebeyno...@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 Я ожидал, что скрипт выведет мне имена для папок, которые нужно создать. Но выводится также и мусор (то, что не подходит под шаблон ). $ *./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 Как убрать из вывода строки, которые не совпадают с шаблоном ? -- Alex Emergy -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
Re: Нужна помощь с sed
Может я что-то не понял, но можно тогда пример, без скрипта, что есть и что должно быть на выходе? 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 пользователь Тарас Перебейносов mailto:taras.perebeyno...@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 Я ожидал, что скрипт выведет мне имена для папок, которые нужно создать. Но выводится также и мусор (то, что не подходит под шаблон ). $ *./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 Как убрать из вывода строки, которые не совпадают с шаблоном ? -- Alex Emergy -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
Re: Нужна помощь с sed
Вставил костылик в виде 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.perebeyno...@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 > > Я ожидал, что скрипт выведет мне имена для папок, которые нужно создать. > Но выводится также и мусор (то, что не подходит под шаблон ). > > $ *./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 > > Как убрать из вывода строки, которые не совпадают с шаблоном ? > -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
Нужна помощь с sed
Доброго времени суток! Помогите, пожалуйста, разобраться с регулярными выражениями в 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 Я ожидал, что скрипт выведет мне имена для папок, которые нужно создать. Но выводится также и мусор (то, что не подходит под шаблон ). $ *./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 Как убрать из вывода строки, которые не совпадают с шаблоном ? -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru