Показать полную графическую версию : [решено] Сортировка строк в текстовом файле по дате
Здравствуйте!
Есть текстовый файл, каждая строка в котором начинается с даты в формате DD.MM.YYYY, но не по порядку, нужно отсортировать строки по дате.
Т. е. в файле имеем:
10.07.2017 AAAA
13.07.2017 DDDD
11.07.2017 BBBB
12.07.2017 CCCC
Нужно получить:
10.07.2017 AAAA
11.07.2017 BBBB
12.07.2017 CCCC
13.07.2017 DDDD
Желательно реализовать это в CMD\BAT\VBS
Упакуйте образец файла в архив и приложите к сообщению. Укажите примерный размер оригинальных файлов. Укажите, нужна ли сортировка по последующему содержимому строки, если у некоторых строк даты будут совпадать.
Желательно реализовать это в CMD\BAT\VBS »
Устроил бы Вас Microsoft LogParser (буде окажется возможным решение посредством него)?
Добавил, размер примерно до 1Мб, сортировка по следующему содержимому не нужна, только по дате. Нужен максимально простой запуск обработки, чтобы ничего-нигде на надо было щелкать лишнего, не знаю насчет Microsoft LogParser, никогда о нём раньше не слышал, если с ним это возможно, то можно и посредством него.
Powershell:
Get-Content .\sample.txt | Sort-Object {"$_[5..9]$_[2..3]$_[0..1]"}
PowerShell:
Get-Content sample.txt | Sort { [datetime]::ParseExact($_.split("|")[0],"dd.MM.yyyy",$null)} | Out-File r.txt
Busla, в этом случае не сортирует месяц, т. е. может быть сначала 7-й, потом 6-й, потом 8-й.
Kazun, а вот это, похоже то, что надо. Тестирую.
не знаю насчет Microsoft LogParser, никогда о нём раньше не слышал »
Это уже достаточно старая разработка Microsoft, особо ценная тем, что для обработки текстовых данных (в том числе различных логов) по сравнению с прочими скриптовыми радостями (даже посредством OLE DB) является наиболее эффективным из известных мне средств. Особенно на достаточно крупных, сравнимых с объёмами оперативной памяти, файлах.
Iska, погуглил, штука крутая, но для моей задачи, сильно overkill, как орехи кувалдой колоть. И, как я понял, ставится отдельным компонентом, вариант с PowerShell, похоже, вполне работоспособный, потестирую еще пару дней, но думаю, что всё будет ОК.
TRaMeLL, да, циферки сдвинулись, должно быть: "$_[6..9]$_[3..4]$_[0..1]"
это просто порядковые номера символов в исходной строке из которых формируется критерий сортировки ГодМесяцЧисло
Busla, тогда результат сортировки такой:
11.06.2017 | .................................................
11.07.2017 | .................................................
12.06.2017 | .................................................
12.07.2017 | .................................................
TRaMeLL, если использование скрипта не принципиально, AkelPad с этим прекрасно справляется. Заодно сразу видите результат.
"Строки по числовому возрастанию/убыванию"
yurfed, в чистом AkelPad не увидел, наверное это в плагинах. Аналогичная функция есть в NotePad++, но результат сортировки аналогичен варианту который получается в примере из сообщения #4 (правка в #9), т. е. месяцы в этом случае смешиваются. Вообще мне лучше скриптом, готовое решение уже есть (сообщение #5), просто спортивного интереса ради любопытно: какие еще есть варианты.
в чистом AkelPad не увидел »
https://yadi.sk/i/S5V6g-HR3MK29E
Стрелочкой отметил.
TRaMeLL, да, напортачил я с синтаксисом... Лаконично не получается :-/
Get-Content .\sample.txt | Sort-Object {$_.SubString(6,4),$_.SubString(3,2),$_.SubString(0,2)}
yurfed, а что это за версия такая? Это точно AkelPad? Я нахожу такое:
http://akelpad.sourceforge.net/files/screen_basic.png
По этой ссылке - http://akelpad.sourceforge.net/ru/index.php
Busla, вот теперь, вроде, как надо. Добавил вторым вариантом, буду тестировать.
Стрелочкой отметил. »
У вас небось все плагины для AkelPad стоят. ;)
У вас небось все плагины для AkelPad стоят. »
Вот
https://yadi.sk/i/zx_FyuVj3MKDtk и
https://yadi.sk/i/FoIRarZY3MKDx7
а что это за версия такая? Это точно AkelPad? »
https://yadi.sk/i/-qPo5ClV3MKDVt
Базовый и с плугами (http://akelpad.sourceforge.net/ru/index.php)
yurfed, посмотрел, нет результат аналогичен сортировке в NotePad++, месяцы и годы сортируются не так, как мне надо. Пока крайний вариант от Busla меня устраивает, такой по-хорошему "дубовый", без заморочек.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.