![]() |
Сортировка строк в текстовом файле по дате
Вложений: 1
Здравствуйте!
Есть текстовый файл, каждая строка в котором начинается с даты в формате 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 |
Упакуйте образец файла в архив и приложите к сообщению. Укажите примерный размер оригинальных файлов. Укажите, нужна ли сортировка по последующему содержимому строки, если у некоторых строк даты будут совпадать.
Цитата:
|
Добавил, размер примерно до 1Мб, сортировка по следующему содержимому не нужна, только по дате. Нужен максимально простой запуск обработки, чтобы ничего-нигде на надо было щелкать лишнего, не знаю насчет Microsoft LogParser, никогда о нём раньше не слышал, если с ним это возможно, то можно и посредством него.
|
Powershell:
Код:
|
PowerShell:
Код:
Get-Content sample.txt | Sort { [datetime]::ParseExact($_.split("|")[0],"dd.MM.yyyy",$null)} | Out-File r.txt |
Busla, в этом случае не сортирует месяц, т. е. может быть сначала 7-й, потом 6-й, потом 8-й.
Kazun, а вот это, похоже то, что надо. Тестирую. |
Цитата:
|
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), просто спортивного интереса ради любопытно: какие еще есть варианты.
|
Цитата:
Стрелочкой отметил. |
TRaMeLL, да, напортачил я с синтаксисом... Лаконично не получается :-/
Get-Content .\sample.txt | Sort-Object {$_.SubString(6,4),$_.SubString(3,2),$_.SubString(0,2)} |
yurfed, а что это за версия такая? Это точно AkelPad? Я нахожу такое:
![]() По этой ссылке - http://akelpad.sourceforge.net/ru/index.php Busla, вот теперь, вроде, как надо. Добавил вторым вариантом, буду тестировать. |
Цитата:
|
Цитата:
https://yadi.sk/i/zx_FyuVj3MKDtk и https://yadi.sk/i/FoIRarZY3MKDx7 Цитата:
Базовый и с плугами |
yurfed, посмотрел, нет результат аналогичен сортировке в NotePad++, месяцы и годы сортируются не так, как мне надо. Пока крайний вариант от Busla меня устраивает, такой по-хорошему "дубовый", без заморочек.
|
Время: 11:51. |
Время: 11:51.
© OSzone.net 2001-