Использованиеsed
:
sed -n -e '\#08/01/2017#,\#08/15/2017#w first.out' \
-e '\#08/16/2017#,\#08/31/2017#w second.out' file.in
Это запишет все строки между строкой, содержащей 08/01/2017
, и строкой, содержащей 08/15/2017
(, включая ), в файл first.out
. Аналогично для второго диапазона дат, но до second.out
.
Это зависит от того, что файл file.in
сортируется по дате.
Символ #
был выбран в качестве ограничителя шаблона, поскольку шаблон уже содержит /
.
Это безумие, но правда... Сегодня я был на новом сервере и совершенно забыл об этом вопросе (и ответе, спрятанном в комментариях ), я на самом деле гуглил, как это сделать сегодня. Я публикую свой ответ для себя или для всех, у кого есть проблемы с отключением ввода функциональных клавиш в командной строке vi:
~/.inputrc
set keymap vi-insert
"\e[19~":redraw-current-line
"\e[20~":redraw-current-line
"\e[21~":redraw-current-line
"\e[22~":redraw-current-line
"\e[23~":redraw-current-line
Как указывает @mosvy, перерисовка текущей строки не позволяет надоедливым "(arg: 20)
" или "(arg: 21)
" испортить ввод командной строки.