Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Нужен скрипт или метод который вставит строки в текстовый файл (http://forum.oszone.net/showthread.php?t=314702)

cyberp1983 09-05-2016 06:28 2633085

Нужен скрипт или метод который вставит строки в текстовый файл
 
Есть каталог c:\basa с текстовым файлом numbers.txt
В файле база номеров (680000), каждый с новой строки.
Нужно вставить номер 12345678910(изменяемый) на каждую 25(изменяемое значение) строку этого файла.
Заранее СПАСИБО!!

greg zakharov 09-05-2016 09:47 2633115

Быстрее и проще все это решить с помощью 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 2633122

Код:

@echo off

pushd "d:\basa"
sed "0~24 s/$/\n1234567890/g" numbers.txt > numbers.tmp
move numbers.tmp numbers.txt
popd

Sed

cyberp1983 09-05-2016 11:05 2633133

Цитата:

Цитата Foreigner
basa »

Остаётся пустой текстовый файл

Цитата:

Цитата greg zakharov
numbers_edited.txt. »

файл пустой

Цитата:

Цитата greg zakharov
То же, но с помощью PowerShell: »

Ничего не произошло, файл не создался

Foreigner 09-05-2016 11:17 2633137

cyberp1983, А Sed есть? Я ссылку на утилиту дал.

cyberp1983 09-05-2016 11:26 2633139

Цитата:

Цитата Foreigner
cyberp1983, А Sed есть? Я ссылку на утилиту дал. »

я в этом 2 по 5) утилиту скачал... установил... а куда сам код? в батник?

Foreigner 09-05-2016 11:34 2633143

Цитата:

Цитата cyberp1983
а куда сам код? в батник? »

Это батник и есть...

cyberp1983 09-05-2016 11:40 2633145

Цитата:

Цитата Foreigner
Это батник и есть... »

создаёт пустой файл

Foreigner 09-05-2016 11:47 2633149

Значит вы что-то делаете не так. Мне сложно сказать, т.к. я не знаю, как вы установили sed. У меня все работает.

cyberp1983 09-05-2016 12:03 2633155

Цитата:

Цитата Foreigner
не знаю, как вы установили sed. »

По вашей ссылке скачал "Complete package, except sources Setup" и установил

Foreigner 09-05-2016 12:18 2633157

Тогда не знаю, возможно каталог с 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 2633161

Цитата:

Цитата Foreigner
@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 »


Спасибо БОЛЬШОЕ! Работает!


Время: 02:27.

Время: 02:27.
© OSzone.net 2001-