Показать полную графическую версию : [решено] Нужен скрипт или метод который вставит строки в текстовый файл
cyberp1983
09-05-2016, 06:28
Есть каталог c:\basa с текстовым файлом numbers.txt
В файле база номеров (680000), каждый с новой строки.
Нужно вставить номер 12345678910(изменяемый) на каждую 25(изменяемое значение) строку этого файла.
Заранее СПАСИБО!!
greg zakharov
09-05-2016, 09:47
Быстрее и проще все это решить с помощью sed:
sed '0~25 s/.*/12345678910/g' < numbers.txt > numbers_edited.txt
Пример выше заменит каждую 25-ую строку значением 12345678910, а вывод перенаправит в файл numbers_edited.txt.
То же, но с помощью PowerShell:
gc .\numbers.txt -r 25|%{if ($_.Length -eq 25) {$_ -replace $_[-1], '12345678910'} else {$_}} | Out-File numbers_edited.txt -enc default
Правда стоит отметить довольно медленную скорость работы PowerShell по сравнению с тем же sed.
Foreigner
09-05-2016, 10:01
@echo off
pushd "d:\basa"
sed "0~24 s/$/\n1234567890/g" numbers.txt > numbers.tmp
move numbers.tmp numbers.txt
popd
Sed (http://gnuwin32.sourceforge.net/packages/sed.htm)
cyberp1983
09-05-2016, 11:05
basa »
Остаётся пустой текстовый файл
numbers_edited.txt. »
файл пустой
То же, но с помощью PowerShell: »
Ничего не произошло, файл не создался
Foreigner
09-05-2016, 11:17
cyberp1983, А Sed есть? Я ссылку на утилиту дал.
cyberp1983
09-05-2016, 11:26
cyberp1983, А Sed есть? Я ссылку на утилиту дал. »
я в этом 2 по 5) утилиту скачал... установил... а куда сам код? в батник?
Foreigner
09-05-2016, 11:34
а куда сам код? в батник? »
Это батник и есть...
cyberp1983
09-05-2016, 11:40
Это батник и есть... »
создаёт пустой файл
Foreigner
09-05-2016, 11:47
Значит вы что-то делаете не так. Мне сложно сказать, т.к. я не знаю, как вы установили sed. У меня все работает.
cyberp1983
09-05-2016, 12:03
не знаю, как вы установили sed. »
По вашей ссылке скачал "Complete package, except sources Setup" и установил
Foreigner
09-05-2016, 12:18
Тогда не знаю, возможно каталог с sed не прописан в PATH и батник его не видит. Попробуйте указать полный путь к утилите или добавить ее каталог в PATH:
@echo off
setlocal
set "path=%path%;C:\Путь\к\Папке где sed.exe"
pushd "d:\basa"
sed "0~24 s/$/\n1234567890/g" numbers.txt > numbers.tmp
move numbers.tmp numbers.txt
popd
cyberp1983
09-05-2016, 12:51
@echo off
setlocal
set "path=%path%;C:\Путь\к\Папке где sed.exe"
pushd "d:\basa"
sed "0~24 s/$/\n1234567890/g" numbers.txt > numbers.tmp
move numbers.tmp numbers.txt
popd »
Спасибо БОЛЬШОЕ! Работает!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.