Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Сортировка строк в текстовом файле по дате

Ответить
Настройки темы
Любой язык - [решено] Сортировка строк в текстовом файле по дате

Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: TRaMeLL
Дата: 24-08-2017
Описание: Добавлен файл
Вложения
Тип файла: zip sample.zip
(2.7 Kb, 4 просмотров)
Здравствуйте!

Есть текстовый файл, каждая строка в котором начинается с даты в формате 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

Отправлено: 13:38, 24-08-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Упакуйте образец файла в архив и приложите к сообщению. Укажите примерный размер оригинальных файлов. Укажите, нужна ли сортировка по последующему содержимому строки, если у некоторых строк даты будут совпадать.

Цитата TRaMeLL:
Желательно реализовать это в CMD\BAT\VBS »
Устроил бы Вас Microsoft LogParser (буде окажется возможным решение посредством него)?

Отправлено: 13:58, 24-08-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добавил, размер примерно до 1Мб, сортировка по следующему содержимому не нужна, только по дате. Нужен максимально простой запуск обработки, чтобы ничего-нигде на надо было щелкать лишнего, не знаю насчет Microsoft LogParser, никогда о нём раньше не слышал, если с ним это возможно, то можно и посредством него.

Отправлено: 14:30, 24-08-2017 | #3


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Powershell:
Код: Выделить весь код
Get-Content .\sample.txt | Sort-Object {"$_[5..9]$_[2..3]$_[0..1]"}

Последний раз редактировалось Busla, 25-08-2017 в 10:09. Причина: правильный код смотри ниже


Отправлено: 15:15, 24-08-2017 | #4


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


PowerShell:
Код: Выделить весь код
Get-Content sample.txt | Sort { [datetime]::ParseExact($_.split("|")[0],"dd.MM.yyyy",$null)} | Out-File r.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:15, 24-08-2017 | #5


Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Busla, в этом случае не сортирует месяц, т. е. может быть сначала 7-й, потом 6-й, потом 8-й.
Kazun, а вот это, похоже то, что надо. Тестирую.

Отправлено: 15:29, 24-08-2017 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата TRaMeLL:
не знаю насчет Microsoft LogParser, никогда о нём раньше не слышал »
Это уже достаточно старая разработка Microsoft, особо ценная тем, что для обработки текстовых данных (в том числе различных логов) по сравнению с прочими скриптовыми радостями (даже посредством OLE DB) является наиболее эффективным из известных мне средств. Особенно на достаточно крупных, сравнимых с объёмами оперативной памяти, файлах.

Отправлено: 15:53, 24-08-2017 | #7


Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, погуглил, штука крутая, но для моей задачи, сильно overkill, как орехи кувалдой колоть. И, как я понял, ставится отдельным компонентом, вариант с PowerShell, похоже, вполне работоспособный, потестирую еще пару дней, но думаю, что всё будет ОК.

Отправлено: 16:33, 24-08-2017 | #8


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


TRaMeLL, да, циферки сдвинулись, должно быть: "$_[6..9]$_[3..4]$_[0..1]"
это просто порядковые номера символов в исходной строке из которых формируется критерий сортировки ГодМесяцЧисло

Отправлено: 17:34, 24-08-2017 | #9


Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Busla, тогда результат сортировки такой:

11.06.2017 | .................................................
11.07.2017 | .................................................
12.06.2017 | .................................................
12.07.2017 | .................................................

Отправлено: 07:08, 25-08-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Сортировка строк в текстовом файле по дате

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление строк в текстовом файле, как это сделать??? VladZombie Скриптовые языки администрирования Windows 70 08-09-2020 13:28
CMD/BAT - работа со строками, а именно редактирование строк в текстовом файле Vlad_705 Скриптовые языки администрирования Windows 7 20-10-2014 17:26
VBS/WSH/JS - Изменение времени строк в текстовом файле на определенную величину RadioSys Скриптовые языки администрирования Windows 6 31-07-2012 20:22
CMD/BAT - Подсчет количества строк в текстовом файле sl1mus Скриптовые языки администрирования Windows 3 28-06-2012 21:29
В текстовом файле 1500 строк и 14 слов отображаются крякозябрами kigerman Хочу все знать 9 26-03-2012 10:10




 
Переход