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

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

Ответить
Настройки темы
CMD/BAT - [решено] Упорядочивание чисел в строках файла txt

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


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

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


Здравствуйте уважаемые форумчане! Возникла у меня задача - быстро перебрать несколько тысяч строк в текстовом файле, в каждой строке указаны числа через запятую с пробелом, нужно чтобы в каждой строке были в порядке возрастания, а они вразброс находятся. Например:
15, 1 ,48, 32, 56
37, 12, 4, 68, 49
После обработки чтобы было
1, 15, 32, 48, 56
4, 12, 37, 49, 68
Будут ли строки переписаны в этом же файле или создастся новый с упорядоченными числами в строках неважно, наверное второй вариант проще)
Возможно ли это реализовать с помощью bat/cmd, если да то как? Очень надеюсь на вашу помощь потому что я в программировании почти не понимаю, программировал только установщики inno setup и nsis, но это было давно да и думаю с обычным программированием мало в этом общего)

Отправлено: 11:52, 22-07-2013

 

Ветеран


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

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


Здесь, как никогда, хорош будет PowerShell:
Код: Выделить весь код
$sSourceFile = "C:\Песочница\022\0001.txt"
$sDestFile   = "C:\Песочница\022\0002.txt"

if(Test-Path -Path $sSourceFile) {
    Get-Content -Path $sSourceFile |`
        ForEach-Object -Process {
            ($_.Split(",") |`
                ForEach-Object -Process {
                    [System.Int32]$_.Trim()
                } | Sort-Object) -join ", "
        } | Set-Content -Path $sDestFile
} else {
    Write-Host -ForegroundColor Red "Can't find source file [$sSourceFile]"
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:22, 22-07-2013 | #2



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

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


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


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

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


Iska, спасибо Вам огромное все отлично работает!)) Хотелось бы еще узнать можно ли как то по простому организовать поиск одинаковых строк в файле текстовом и одинаковые выводить в другой файл, я искал и натолкнулся что в линуксе это делается так: sort file.1 | uniq -d > file.2
Есть ли что-нибудь подобное для винды?)

Отправлено: 14:08, 22-07-2013 | #3


Ветеран


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

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


Цитата Belial4444:
Есть ли что-нибудь подобное для винды?) »
Нет.

Цитата Belial4444:
и одинаковые выводить в другой файл, »
Зачем Вам выводить одинаковые?

Обычно ищут напротив — уникальные:
Код: Выделить весь код
$sSourceFile = "C:\Песочница\022\0003.txt"
$sDestFile   = "C:\Песочница\022\0004.txt"

if(Test-Path -Path $sSourceFile) {
    Get-Content -Path $sSourceFile | Select-Object -Unique | Set-Content -Path $sDestFile
} else {
    Write-Host -ForegroundColor Red "Can't find source file [$sSourceFile]"
}

Отправлено: 14:42, 22-07-2013 | #4


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


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

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


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

Отправлено: 16:57, 22-07-2013 | #5


Ветеран


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

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


Belial4444, в каком виде Вам надо? Просто перечислить по одному разу повторяющиеся строки? Или сколько раз повторов — столько раз и выводить повторяющуюся строку?

Т.е., из:
Код: Выделить весь код
1
2
3
2
2
3
4
5
Вам нужно получить:
Код: Выделить весь код
2
3
или же:
Код: Выделить весь код
2
3
2
2
3
?

Отправлено: 17:03, 22-07-2013 | #6


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


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

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


Iska, мне просто столбиком вывести в файл повторяющуюся комбинацию, например
Код: Выделить весь код
12345
101112131415
6789
12345
765432
765432
Код: Выделить весь код
12345
765432
Ну только, чтобы так же были цифры через запятую с пробелом)

Отправлено: 17:16, 22-07-2013 | #7


Ветеран


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

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


То бишь — однократно. Ну, вот как-то так:
Код: Выделить весь код
$sSourceFile = "C:\Песочница\022\0005.txt"
$sDestFile   = "C:\Песочница\022\0006.txt"

if(Test-Path -Path $sSourceFile) {
    Compare-Object -ReferenceObject (Get-Content -Path $sSourceFile) -DifferenceObject (Get-Content -Path $sSourceFile | Select-Object -Unique) -PassThru | `
        Set-Content -Path $sDestFile
} else {
    Write-Host -ForegroundColor Red "Can't find source file [$sSourceFile]"
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:34, 22-07-2013 | #8


Ветеран


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

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


Как вариант. Перезаписывает исходный файл 1.txt ( с "uniq -d" )
Код: Выделить весь код
$a = gc 1.txt | select -unique 

(compare (gc 1.txt) $a).inputobject | % {

    ((( $_ -replace '\s','' -split ',' ) | % { [int] $_ } ) | sort ) -join ', '
    
} | sc 1.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:40, 22-07-2013 | #9


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


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

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


Iska, Foreigner, то что нужно все как надо работает) Спасибо Вам большое, помогли очень сильно) У меня больше вопросов пока нету)

Отправлено: 21:21, 22-07-2013 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Создание TXT файла для каждого файла в каталоге ISO и заполнение его по шаблону onemal Скриптовые языки администрирования Windows 23 13-05-2017 15:35
C/C++ - [решено] Редактирование txt файла Starter1 Программирование и базы данных 7 27-11-2011 17:46
CMD/BAT - [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла. OSArev Скриптовые языки администрирования Windows 2 30-01-2011 11:58
CMD/BAT - [решено] Поиск чисел внутри файла Hardip Скриптовые языки администрирования Windows 5 19-11-2010 15:20
CMD/BAT - [решено] печать txt файла Loki3D Скриптовые языки администрирования Windows 15 12-05-2009 16:35




 
Переход