сортировка и разделение по ФИО
Необходимо создать файл bat который сортирует имена, фамилии и отчества и разделяет их в три отдельных текстовых файла
|
(они даны в отдельном текстовом файле)
|
нужна структура файла (а лучше он сам или хотя бы кусок) и принцип разделения на эти три файла (в один имена во второй фамилии в третий отчества? или как?)
|
Цитата:
Цитата Elven
нужна структура файла (а лучше он сам или хотя бы кусок) и принцип разделения на эти три файла »
|
лучше и то и другое и заранее спасибо
|
«…и можно без хлеба!»™ :).
firemage, Вам говорят, чтобы Вы упаковали Ваш файл в архив, каковой прикрепили бы к сообщению.
|
Вложений: 1
Iska, держите, но тут это роли не играет, можно любые фио брать
|
firemage,
невозможно открыть архив.
например вот структура в файле "file.txt"
Скрытый текст
Код:
N=Иванов;SN=Иван;P=Иванович
N=Петров;SN=Петр Константин;P=Захарович
N=Луговой-Дуров;SN=Всеволод;P=Кириллович
а вот разделение:
Код:
@echo off
<file.txt (for /f "tokens=1-3 delims=;" %%a in ('more') do @set "%%a"& set "%%b"& set "%%c"& call :#)
pause& exit
:#
echo %N% %SN% %P%
exit /b
отправить каждую переменную в свой файл труда, соответственно, не составит.
|
Вложений: 1
alpap, Iska, Elven, держите тогда не архивом
|
firemage,
я ждал чего-то подобного, но как быть с двойными фамилиями, но хуже того двойными именами?
но интереснее всего то, что:
ну вот раскидали мы имена, фамилии и отчества по отдельным файлам без всякой привязки и что получилось? Рандомный набор имен, фамилий и отчеств в разных файлах, для чего это все, смысл в чем? Что вы хотели этим добиться? Какова глобальная задача?
|
Цитата:
Цитата alpap
firemage, невозможно открыть архив. »
|
Я — открыл.
Цитата:
Цитата firemage
но тут это роли не играет, можно любые фио брать »
|
Роль играют — кодировка, наличие/отсутствие BOM, тип концов строк. В случае Вашего файла это — 65001/UTF-8 с BOM и стандартные 0x0D, 0x0A в качестве концов строк. А также внутренняя структура содержимого, в Вашем случае в частности — непонятные местами появляющиеся пробелы в конце некоторых строк. Откуда они?
Цитата:
Цитата firemage
сортирует имена, фамилии и отчества и разделяет их в три отдельных текстовых файла »
|
Мы сначала сортируем, а затем разделяем или же сначала разделяем, а потом сортируем каждый из трёх результирующих файлов отдельно?
|
Iska, первое
alpap, двойные фамилии обычно пишутся "фамилия-фамилия"
|
Elven, как хотя б просто разделить по фамилиям именам и отчествам (т.е. по 1,2 и 3 слову)
|
если правильно задать, легко и разделить. В моем примере задано было через ; соответственно так и делилось: for /f "tokens=1-3 delims=;"
но все-таки хотелось бы понять смысл того что в итоге. Я понимаю еще привязать к какому-то столбцу, телефонов и т.д., например и построчно раскидывать:
файл1: имя=телефон
файл2: фамилия=адрес
файл3: отчество=email
а какой смысл просто набор имен, например?
|
firemage,
Если не секрет... Вам, чуть выше задали вопрос: а зачем эти наборы имен, отчеств и фамилий в отдельных файлах? Они ведь никак не будут связаны между собой... в чем смысл?
|
YuS_2, alpap, если не секрет, то это такая лаба извращённая
|
Если это лаба, значит поиск решения на форумах - это попытка наступить себе на галстук, а так же предложение форумчанам оказать Вам медвежью услугу. Т.к. это лаба, условия ее маловероятно, что будут слишком замороченными, следовательно решение здесь находится через один for. Мне понадобилось 5 строчек, не исключаю, что коллеги обошлись бы даже меньшим количеством, однако решение приводить не очень хочется по причинам указанным в самом начале поста.
|
задание, еще поверю, но не лаба. В любом случае она будет иметь осмысленное завершенное решение и создается для обучения и понимания процессов, а не забивание гвоздей микроскопом.
|
alpap, да ладно? а использовать рекурсию для нахождения n-го члена ряда Фибоначчи не забивание указанной оптикой указанных крепежных изделий? А строку переворачивать до задомнапередного состояния через цикл? Лабы могут быть и куда более отбитыми чем сортировка имен фамилий и отчеств по разным файлам.
|
Цитата:
Цитата firemage
то это такая лаба извращённая »
|
firemage, а откуда взялся такой оригинальный fio.txt, в 65001/UTF-8 с BOM?! Даже в дурных лабораторках не должно быть таких исходных файлов.
|
Цитата:
Цитата Elven
нахождения n-го члена ряда Фибоначчи »
|
а чего страшного-то? ну микроскоп, ну гвоздь... берем и забиваем. Ну, нет более подходящего инструмента под рукой - а что делать? :)
Кстати о числах Фибоначчи... иногда попадаются высказывания о медленных массивах в powershell, вот и проверим на этих числах, с секундомером в руках:
Код:
$watch = [diagnostics.stopwatch]::startnew()
$watch.start() #Запуск таймера
# запуск: .\script.ps1 n
#где n - n-ый член ряда Фибоначчи
# при n = 250000 - TotalSeconds : 18,4659158
# при n = 275000 - TotalSeconds : 60,6238501
# не рекомендую использовать бОльшие числа, ибо легко поймать переполнение с зависанием
$k = $args[0]
if ($k -lt 2){write-host Должно быть выполнено условие n ≥ 2;sleep 3;break}
$arr = new-object 'bigint[]' ($k+1)
for ($i=0;$i -le $k;$i++){
if ($i -lt 2){$arr[$i] = $i} else {
$arr[$i]=$arr[$i-1]+$arr[$i-2]
}
}
write-host " F₈ = " $arr[8]"`n"`
"F₉ = " $arr[9]"`n"`
"F₁₀ = " $arr[10]"`n"`
"F₁₈ = " $arr[18]"`n"`
"F₁₉ = " $arr[19]"`n"`
"F₂₀ = " $arr[20]"`n"`
"F₂₉₈ = " $arr[298]"`n"`
"F₂₉₉ = " $arr[299]"`n"`
"F₃₀₀ = " $arr[300]"`n"`
"Fn = " $arr[$k]
$watch.stop() #Остановка таймера
$watch.elapsed >startstop.txt #Время выполнения
имхо, вполне приемлемая скорость заполнения массива рядом чисел Фибоначчи... нет? :)
|
Из файла с "Фамилиями Именами Отчествами"
Делаю три файла отдельно с "Фамилиями" "Именами" "Отчествами"
Содержимое каждого файла отсортировано по алфавиту
Код:
@Echo Off
Set "File=Z:\Box_In\file.txt"
Set "Family=Z:\Box_Out\family.txt"
Set "Name=Z:\Box_Out\name.txt"
Set "Patron=Z:\Box_Out\patron.txt"
(FOR /F "usebackq tokens=1 delims= " %%s IN (`more "%File%"`) DO @Echo %%s)|Sort /O "%Family%"
(FOR /F "usebackq tokens=2 delims= " %%s IN (`more "%File%"`) DO @Echo %%s)|Sort /O "%Name%"
(FOR /F "usebackq tokens=3 delims= " %%s IN (`more "%File%"`) DO @Echo %%s)|Sort /O "%Patron%"
Смысла, правда, в этом не вижу никакого
|
Цитата:
Цитата megaloman
Содержимое каждого файла отсортировано по алфавиту »
|
А я понял, что нужно наоборот — отсортировать общий список, затем уже его, отсортированный, делить.
|
Iska понял, что надо отсортировать общий список, затем уже его, отсортированный, делить. Подчиняюсь.
Код:
@Echo Off
Set "File=Z:\Box_In\file.txt"
Set "Family=Z:\Box_Out\family.txt"
Set "Name=Z:\Box_Out\name.txt"
Set "Patron=Z:\Box_Out\patron.txt"
Del "%Family%" "%Name%" "%Patron%" 2>nul
FOR /F "usebackq tokens=1,2,3 delims= " %%i IN (`more "%File%"^|Sort`) DO (
>>"%Family%" Echo %%i
>>"%Name%" Echo %%j
>>"%Patron%" Echo %%k
)
|
Время: 11:09.
© OSzone.net 2001-