Вот если бы мне нужно было в csv файле, например,
input.csv с датами вида
2016-12-04 17:46:04 отсортировать строки по возрастанию дат, то я бы просто применил команду
sort. А как мне выбрать строки в промежутке от заданных мной дат?
Допустим в файле input.csv
2015-10-06 15:09:01;данные1
2016-12-03 10:00:04;данные2
2016-09-23 11-00-09;данные3
2016-12-01 09:22:00;данные4
2016-11-29 18:44:13;данные5
...
а мне нужно выбрать строки с датами в промежутке
2016-11-28 00:00:00 до
2016-12:05 00:00:00Ну, наверное, я сначала бы написал команду
sort input.csv и получил бы отсортированный выход вида:
2015-10-06 15:09:01;данные1
2016-09-23 11-00-09;данные3
2016-11-29 18:44:13;данные5
2016-12-01 09:22:00;данные4
2016-12-03 10:00:04;данные2
А дальше как выбрать строк из промежутка
2016-11-28 00:00:00 до
2016-12:05 00:00:00 ?
Пользователь добавил сообщение 04 Декабря 2016, 18:06:46:
А если у меня будут данные вида
2016-12-01 00:00:01;2015-10-06 15:09:01;данные1
2016-12-02 00:00:02;2016-12-03 10:00:04;данные2
2016-12-03 00:00:03;2016-09-23 11-00-09;данные3
2016-12-04 00:00:04;2016-12-01 09:22:00;данные4
2016-12-05 00:00:05;2016-11-29 18:44:13;данные5
то для их сортировки я применю
sort -t";" -k2 и получу
2016-12-01 00:00:01;2015-10-06 15:09:01;данные1
2016-12-03 00:00:03;2016-09-23 11-00-09;данные3
2016-12-05 00:00:05;2016-11-29 18:44:13;данные5
2016-12-04 00:00:04;2016-12-01 09:22:00;данные4
2016-12-02 00:00:02;2016-12-03 10:00:04;данные2
Но вот как выбрать из промежутка дат?
Пользователь добавил сообщение 04 Декабря 2016, 19:16:48:
пока сам себе отвечаю, но может быть, ещё кому пригодится.
Т.к. Гугл меня ещё не забанил
,то по одной ссылке
http://stackoverflow.com/questions/17465686/shell-script-to-extract-data-from-file-between-two-date-rangesнашел вариант команды
sort file | sed -n '/2013-06-12/,/2013-06-15/p'
который будет работать, если границы промежутка совпадают со значениями, которые есть в файле
input.csv (см. мой пример выше). Но мне бы хотелось, чтобы можно было скормить скрипту произвольные даты, между которыми осуществлялся бы поиск. Но уже теплее.. Может быть у кого есть идеи как допилить? Если разберусь раньше, то отпишусь.
Пользователь добавил сообщение 04 Декабря 2016, 21:01:43:
В общем ночь, голова не соображает, получилось вот что:
#!/bin/bash
cp /home/morhad/out1.txt /home/morhad/out2.txt
echo ";"$1" 00:00:00;начало" >> /home/morhad/out2.txt
echo ";"$2" 00:00:00;конец" >> /home/morhad/out2.txt
#cat /home/morhad/out2.txt
#let tmp="/$1 00:00:00/,/$2 00:00:00/p"
sort -t";" -k2 /home/morhad/out2.txt | sed -n "/$1 00:00:00/,/$2 00:00:00/p" > /home/morhad/out3.txt
sed '1,1d' /home/morhad/out3.txt > /home/morhad/out4.txt
sed '$d' /home/morhad/out4.txt > /home/morhad/out3.txt
cat /home/morhad/out3.txt
Если скрипту скормить две даты, то в файле
out3.txt будут именно отсортированные между этими датами строки.
Но может быть есть более красивое решение, но на bash ?
Листинги и содержимое текстовых файлов следует добавлять в сообщение с помощью тега [spoiler]...[/spoiler] или [code]...[/code], либо прикреплять к сообщению в виде отдельного файла.--Azure