Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 9

Sort по первому числу в строке

28.10.2018, 13:32. Показов 2211. Ответов 36

Студворк — интернет-сервис помощи студентам
Здравстуйте.

Возник следующий вопрос
При сортировке (командой sort /R) .txt файла вида:
8 ***
10 ***
2 ***
3 ***
выводит следующее :
8 ***
3 ***
2 ***
10 ***
как заставить cmd воспринимать 10 как число, а не как цифру 1 ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.10.2018, 13:32
Ответы с готовыми решениями:

Сортировка списка, главная сортировка по второму числу, второстепенная по первому числу
CardList.Sort(new Comparison<int>((arg1, arg2) => { return (arg1 % 10).CompareTo(arg2 % 10); })); В данном коде сортируется список...

Из каждой группы чисел взять по первому числу
Здравствуйте, подскажите, есть группы числе в столбик, как можно из каждой группы взять по первому числу, 0 1 2 3 4 5 6 7 8 9, или может...

Определить сумму элементов массива X(n), предшествующих первому отрицательному числу
Лабораторная работа №4. Массивы Задача 1. Определить сумму элементов массива X(n), предшествующих первому отрицательному числу. Вывести...

36
 Аватар для volodin661
7097 / 2328 / 353
Регистрация: 10.12.2013
Сообщений: 8,054
29.10.2018, 17:49
Студворк — интернет-сервис помощи студентам
Когда мы работаем с регулярным выражением, то заказываем и контекст,
таким образом шаблон \p{N}+ по отношению к символу Ⅸ вернёт именно число.
0
29.10.2018, 18:00

Не по теме:

Цитата Сообщение от volodin661 Посмотреть сообщение
Когда мы работаем с регулярным выражением, то заказываем и контекст
Так я спрашивал про то, как этот контекст понять? Что "I, Robot" это не "глава 1, Робот", а "Я, робот".

0
 Аватар для volodin661
7097 / 2328 / 353
Регистрация: 10.12.2013
Сообщений: 8,054
29.10.2018, 18:20
Это Юникод и Roman Numеrals живут блоке Number Forms в диапазоне от U+2160 до U+2188
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
29.10.2018, 18:37

Не по теме:

Цитата Сообщение от volodin661 Посмотреть сообщение
Это Юникод и Roman Numеrals живут блоке Number Forms в диапазоне от U+2160 до U+2188
Понятно, но к сожалению, пока очень редко кто, для того чтобы написать "Глава I", использует Number Forms...



Добавлено через 6 минут
Цитата Сообщение от YuS_2 Посмотреть сообщение
Осталось только выровнять числа нулями
Just for fun - без foreach и if, но с PadLeft и строчками без чисел

PowerShell
1
[regex]::new('^(\d+)','MultiLine').Replace((gc 1.txt -ra),{param($match)$match.Groups[1].Value.PadLeft(5,'0')})-split"`n"|sort
1
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 9
29.10.2018, 21:55  [ТС]
Очень обученные люди).Спасибо вам. Как я понял, чисто на cmd выполнить данную задачу проблематично...
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
29.10.2018, 22:08
gesr_s, а с привёдённой вами утилитой (вы её почему-то командой назвали) sort это "чисто на cmd"?
1
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
29.10.2018, 22:19
Цитата Сообщение от gesr_s Посмотреть сообщение
Спасибо вам
Да не за что
Цитата Сообщение от gesr_s Посмотреть сообщение
Как я понял, чисто на cmd выполнить данную задачу проблематично...
Тут главный вопрос - зачем? А выполнять можно что угодно.
Шурупы удобнее крутить шуруповертом, чем молотком... надо исходить из этого.

ЗЫ Если это задание для студентов, то и решать его надо самостоятельно, иначе это будет медвежьей услугой...
Если же это реальная задача, то какая разница чем её решать? Понимаете?
1
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 9
29.10.2018, 22:55  [ТС]
Вероятно я ошибся в терминологии, что же, бывает, прошу простить. Просто использование, например, sqlite/powershell и других полезных вещей (в которых знания на данный момент нулевые) приведет к не лучшему исходу при защите лабы)
0
30.10.2018, 00:11

Не по теме:

Всё-таки закончу.
Я знаю только одно инструментальное средство, которое решит предложенную задачу

Цитата Сообщение от gesr_s Посмотреть сообщение
сортировкa .txt файла вида:
8 ***
10 ***
2 ***
3 ***
где числом может являться любой символ из Юникода, относящийся к числовому набору или даже математическое выражение из символов Юникода и выглядеть это решение будет так:


Исходный текст:
21 - это обычное число в десятичной нотации ( двадцать один )
1021 - это обычное число в десятичной нотации ( тысяча двадцать один )
Ⅸ - это римская цифра (девять)
Ⅿ - это римская цифра (тысяча )
¾ - это символы, относящиеся к дробным числам ( три четвертых )
½ - это символы, относящиеся к дробным числам ( одна вторая )
२० - это Современный Девангари ( двадцать )
5³ - это обычные числа в десятичной нотации, образующие математическое выражение 5 в 3 степени ( сто двадцать пять )

Code
1
.say for lines.sort: *.match(/<:Number>+/).EVAL
Отсортированный:
½ - это символы, относящиеся к дробным числам ( одна вторая )
¾ - это символы, относящиеся к дробным числам ( три четвертых )
Ⅸ - это римская цифра (девять)
२० - это Современный Девангари ( двадцать )
21 - это обычное число в десятичной нотации ( двадцать один )
5³ - это обычные числа в десятичной нотации, образующие математическое выражение 5 в 3 степени ( сто двадцать пять )
Ⅿ - это римская цифра (тысяча )
1021 - это обычное число в десятичной нотации ( тысяча двадцать один )

0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
30.10.2018, 01:14
Цитата Сообщение от volodin661 Посмотреть сообщение
одно инструментальное средство
Матчить юникодные блоки дофига кто умеет.

Не по теме:


>>> import regex
>>> regex.findall(r'\p{N}+', text)
['21', '1021', 'Ⅸ', 'Ⅿ', '¾', '½', '२०', '5³', '5', '3']
>>>
P.S. eval , конечно, в чистом виде такие символы (которые не ASCII) как Numeric не скушает. Но скастовать каждый символ из пары в int тоже не слишком большая проблема.


Да и PoSH их матчит:
PS D:\ПРОГРАММИРОВАНИЕ\POWERSHELL> > ([regex]"\p{N}+").Matches($text).value
21
1021


¾
½
२०

5
3

3
 Аватар для volodin661
7097 / 2328 / 353
Регистрация: 10.12.2013
Сообщений: 8,054
30.10.2018, 01:37
Garry, не передёргивай, в этом топике речь идёт о числовой сортировке.
Так что, Alpap, забери у него своё 'спасибо' взад ))
3
30.10.2018, 14:51

Не по теме:

Цитата Сообщение от volodin661 Посмотреть сообщение
не передёргивай
Ну если только чуть-чуть :-)
PS D:\ПРОГРАММИРОВАНИЕ\POWERSHELL> > [char]::GetNumericValue('Ⅸ')
9
PS D:\ПРОГРАММИРОВАНИЕ\POWERSHELL> > [char]::GetNumericValue('Ⅿ')
1000
PS D:\ПРОГРАММИРОВАНИЕ\POWERSHELL> > [char]::GetNumericValue('½')
0,5
Разумеется, такого хитрого eval'а как в Perl6, наверно, действительно нет нигде.
Но решить то задачу (сортировка любых (или почти любых) юникодных numeric значений) все равно можно любым продакшен уровня ЯП... Да, будет многабукаф, но, тем не менее... Правда, ТС'у все наши изыскания вполне фиолетовы.

Вот набросок на скорую руку. Работает корректно для юникодных numeric значений, кроме цифр со степенью (парсит 5³ как 53).
Очевидно, что для таких матем. выражений требуется особый разбор и интерпретация.

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$text = cat "digit.txt" -raw -enc utf8  
$m= ([regex]"(?m)^\p{N}+").Matches($text).value
 
$result = @()
$m | % {
    $n = 0;
    if  (-not [int32]::tryparse($_,[ref]$n)){ 
       $n = ($_.ToCharArray()| % { 
            [char]::GetNumericValue($_)
             }) -join ''
   }    
    $result+=[float]::parse($n,
        [Globalization.CultureInfo]::InvariantCulture.NumberFormat
    )
}
 
 
$result|sort -Desc
Code
1
2
3
4
5
6
7
8
1021
1000
53
21
20
9
0,75
0,5

0
30.10.2018, 19:20

Не по теме:

Цитата Сообщение от Garry Galler Посмотреть сообщение
Очевидно, что для таких матем. выражений требуется особый разбор и интерпретация.
да, и реализовать реально, конечно; определить, что это число относится к superscript символам и возвести в эту степень.

Если скажут, что практического смысла в этих юникод-экзерсисах немного, я, пожалуй, соглашусь.

Но весело же:

my \x := 3;
my \последовательность := x², x³, x⁴ ... ∞;
say последовательность[ 0 .. 10 ];


Output:
(9 27 81 243 729 2187 6561 19683 59049 177147 531441)

0
31.10.2018, 07:28

Не по теме:

Цитата Сообщение от volodin661 Посмотреть сообщение
Если скажут, что практического смысла в этих юникод-экзерсисах немного, я, пожалуй, соглашусь.
а я, пожалуй, не соглашусь, ибо тренировка ума и прочих извилин, как минимум... это всегда полезно.
да и в любом случае:
Цитата Сообщение от volodin661 Посмотреть сообщение
весело же
Garry Galler, volodin661,
Помимо этого, интересен вопрос: а какой шрифт используете для консоли, чтобы все эти изыски корректно отображались?
Как-то пытался найти наиболее полный, но получалось либо-либо...в общем, дайте совет какой лучше использовать.

0
31.10.2018, 12:21

Не по теме:

Цитата Сообщение от YuS_2 Посмотреть сообщение
какой шрифт используете для консоли
YuS_2, интуитивно пользую Courier New, но результат мне на самом деле неизвестен, поскольку разница разительная между Windows и MacOS ( у меня MacOS ); шрифт в системе и там и там от одной и той же фирмы( я проверял. под Windows 10 версия шрифта даже новее ), но только под MacOS всё показывается, а под Windows прямоугольники вместо некоторых символов.

0
31.10.2018, 13:34

Не по теме:

YuS_2,
Тут смена шрифта не помогает - в cmd консоли все равно половина юникода в квадратах.
В консоли ISE - получше отображается.

Например, вот эти диапазоны - почти все символы:



PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'Дополнительная латиница-1:0080—00FF'
0x0080..0x00FF| % {[char]$_}
'Расширенная латиница-A:0100—017F'
0x0100..0x017F| % {[char]$_}
'Расширенная латиница-B 0180—024F'
0x0180..0x024F| % {[char]$_}
 
'Математические операторы'
0x2200..0x22FF| % {[char]$_}
'Разнообразные математические символы-A:27C0-27EF' # 28 символов из 48
0x27C0..0x27EF| % {[char]$_}
'Разнообразные математические символы-B: 2980—29FF'
0x2980..0x29FF| % {[char]$_}
'Дополнительные математические операторы: 2A00—2AFF'
0x2A00..0x2AFF| % {[char]$_}
А вот эти - нет
PowerShell
1
2
3
4
5
'Математические буквенно-цифровые символы: 1D400—1D7FF'  # не поддерживает ничего из 1024 символов
0x1D400..0x1D7FF| % {[char]$_}
 
'Арабские математические буквенно-цифровые символы:1EE00-1EEFF'  # не поддерживает ничего из 256 символов 
0x1EE00..0x1EEFF| % {[char]$_}

0
31.10.2018, 14:27

Не по теме:

volodin661, Garry Galler, спасибо!

Цитата Сообщение от volodin661 Посмотреть сообщение
под Windows прямоугольники вместо некоторых символов.
Это да, я бы даже сказал не некоторые, а все почти, которые интересуют... :)

Цитата Сообщение от Garry Galler Посмотреть сообщение
Тут смена шрифта не помогает
с cmd понятно, больше интересовала консоль PS и не ISE именно. Там подбор шрифта дает результат, но либо большое число правильно отображаемых доп.символов, хоть и с кривой типографикой, либо эстетичный вид, но с преобладанием квадратиков/точек/кракозябр...
Думал, что создали какой-либо приемлемый консольный шрифт с более-менее нормальными глифами и правильными символами. Но видимо, микрософту не до проблем "индейцев", чтобы какие-то шрифты до ума доводить или новые рисовать, у шерифов более глобальные задачи. :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.10.2018, 14:27

Найти сумму чисел, предшествующих первому отрицательному числу в файле
Задача: 1) Найти сумму чисел, предшествующих первому отрицательному числу в файле. Исходник: unit Unit1;

Из каждой строки удалить числа, предшествующие первому положительному числу
текстовый файл содержит целые положительные и отрицательные числа. из каждой строки удалить числа, предшествующие первому...

Найти сумму чисел предшествующих первому отрицательное числу последовательности
Написать программу которая находит сумму чисел, которые предшествующих первому отрицательное числу в ведомой последовательности .Всего 6...

Произведение и сумма отрицательных элементов последовательности, предшествующих первому положительному числу
Найти произведение и сумму отрицательных элементов последовательности предшествующих первому положительному числу

Замените нулем все элементы, предшествующие первому нечетному отрицательному числу
Здравствуйте, уважаемые форумчане! Пожалуйста, помогите решить задачи на динамические массивы... №1 №2


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru