- -
сортировка
(
http://forum.oszone.net/showthread.php?t=301504)
user171078 |
22-06-2015 12:03 2521039 |
сортировка
|
Код:
@echo off
setlocal
for /f "tokens=1-3" %%i in (links.txt) do call:set %%i %%j %%k
for /f "tokens=2 delims==" %%i in ('set sort_') do echo %%i
goto:eof
:set
set /a num=100+%2
set sort_%num%=%*
Powershell:
Код:
gc links.txt | sort { $_.split()[1] }
|
Неа:
Цитата:
Код:
http://website/link2 16 20
http://website/link2 2 20
http://website/link2 24 61
http://website/link 50 61
|
Надо хотя бы преобразование добавить:
Код:
gc C:\Песочница\073\0001.txt | sort { [int]$_.split()[1] }
Или в Вашей версии PowerShell автоматом числовая сортировка отрабатывает?
|
Цитата:
Цитата Iska
Надо хотя бы преобразование добавить »
|
У меня и так все нормально.. Но, согласен, не помешает
|
Foreigner, у Вас версия, небось, уже четвёртая?
|
Kazun, Я имел ввиду конкретный пример. В нем все нормально. Каюсь, был не прав, не обратил внимание, что строки разные.
|
Foreigner, Kazun, тогда я перестал понимать :(.
Может быть — ещё от версии ОС зависит (я сталкивался однажды с таким поведением PowerShell — различное поведение одной и той же версии PowerShell с одной и той же версией .Net Framework в разных версиях ОС)?!
Update:
Цитата:
Цитата Foreigner
Kazun, Я имел ввиду конкретный пример. В нем все нормально. Каюсь, был не прав, не обратил внимание, что строки разные. »
|
Foreigner, так приведённый Вами выше пример у Вас отрабатывает всё-таки некорректно не так, как нужно, да?
|
Iska, Конкретный пример списка, который дал user171078, отрабатывает как раз корректно, но это просто совпадение. Для других подобных случаев надо таки указывать тип, как вы правильно меня поправили.
ЗЫ. Меня просто сбил с толку результат, вроде все правильно, я и решил, что string преобразуется в int32
|
Foreigner, так вот я и не пойму — у Вас именно на приведённом примере отрабатывает корректно, у коллеги Kazun (и у меня) на том же самом примере — нет. У Вас и у коллеги Kazun версия PowerShell вроде как одна и та же. Вот я и пытаюсь понять, как такое может быть.
|
Iska, У меня так

|
Так понимаю разница копирования в файл. При копировать-вставить у меня `t, если изменить на пробелы, то получаем похожий результат.

|
Kazun, Вообще как-то странно, при табуляции получается другой результат, сначала 16, а потом 2, даже если сделать так:
Код:
gc 1.txt | sort { $_.split("`t")[1] }
Чем пробел отличается от табуляции, как разделитель?
|
При табуляции происходит правильная сортировка строк. Выше я показал, что получается при split() - если есть пробелы, вместо табуляции и их разным расположением(как в строке 50, если расширить до 4 пробелов то будет другой результат).
Чем пробел отличается от табуляции, как разделитель? - Как минимум кодами.
Код:
PS > [int][char]"`t"
9
PS > [int][char]" "
32
PS > " " -lt "`t"
True
Если привести к визуальному сходству:
Код:
PS > "a`tb"
a b
PS > "a b"
a b
PS > "a`tb".split().count
2
PS > "a b".split().count
8
|
Понял, вопрос не в разделителе, а в их количестве.
Так отрабатывает корректно:
Код:
gc 1.txt | sort { ($_ -split '\s+')[1] } # сортируется как строка
|
Ну, слава богу, разобрались. Теперь буду спать спокойно :).
Цитата:
Цитата Kazun
При копировать-вставить у меня `t, »
|
У меня тоже. Форум сохраняет табуляцию при оформлении тэгом «code».
Foreigner, а как у Вас так получилось скопировать, что вышли пробелы вместо имеющейся табуляции?
|
Iska, У меня в FARе табуляция в редакторе заменяется пробелами.
|
Цитата:
Цитата Foreigner
Iska, У меня в FARе табуляция в редакторе заменяется пробелами. »
|
Я, собственно, так примерно и предполагал, памятуя, что Вы пользуете Far Manager.
У меня — нет:
Скрытый текст
Код:
╔════════════════════════════ Редактор ═════════════════════════════╗
║ [ ] Запускать внешний редактор по F4 вместо Alt-F4 ║
║ Команда редактирования: ║
║ ↓║
╟─────────────────────── Встроенный редактор ───────────────────────╢
║ Преобразовывать табуляцию: ║
║ Не преобразовывать табуляцию ↓║
║ [ ] Постоянные блоки [x] Del удаляет блоки ║
║ [x] Сохранять позицию файла [x] Сохранять закладки ║
║ [ ] Автоотступ [x] Курсор за пределами строки ║
║ 4 Размер табуляции [x] Показывать полосу прокрутки ║
║ [x] Пробельные символы [ ] Cлово под курсором ║
║ ║
║ [x] Разрешить редактирование открытых для записи файлов ║
║ [ ] Блокировать редактирование файлов с атрибутом R/O ║
║ [x] Предупреждать при открытии файла с атрибутом R/O ║
║ [x] Автоопределение кодовой страницы ║
║ [x] Использовать кодовую страницу ANSI по умолчанию ║
║ [x] Использовать кодовую страницу ANSI при создании файлов ║
╟───────────────────────────────────────────────────────────────────╢
║ { OK } [ Отмена ] ║
╚═══════════════════════════════════════════════════════════════════╝
Другой вариант, если пользуете — плагин Editor's settings changer и его настройки преобразования табуляции в пробелы при сохранении.
|
user171078 |
23-06-2015 10:34 2521411 |
можно спросить как это сделать на PHP ?
|
Ну правильно, у вас "Не преобразовывать табуляцию", а у меня "Преобразовывать все символы табуляции в пробелы". Мне так удобней.
|
А под какие цели и задачи? Не просто же так у Вас сие задано?!
|
Iska, Не знаю, я просто так привык, без табуляции. А задач и целей связанных с IT у меня нет вообще, все эти батники для меня лишь разновидность кроссвордов. Не больше. Ну и средство автоматизации личного компьютера.
|
Foreigner, спасибо, ясно.
|
Время: 00:29.
© OSzone.net 2001-