Компьютерный форум 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=274865)

vision-d 28-12-2013 23:47 2280030

Как вставить пробелы в строки
 
Привет всем отзывчивым!
Помогите плиз. Нужно вставить в начало строк пробелы. В ручную не реально сделать (список длиннющий). Посоветуйте что-нибудь!

Iska 28-12-2013 23:55 2280038

Цитата:

Цитата vision-d
Нужно вставить в начало строк пробелы. »

Куда, в текстовый файл? Опять вопросы: а) с кодировкой файла, б) с наличием пустых строк.

vision-d 29-12-2013 12:28 2280184

Да, это текстовый файл. Кодировка 1251, без пустых строк.

Iska 29-12-2013 13:25 2280199

Код:

@echo off
setlocal enableextensions enabledelayedexpansion

>"NewFile.txt" (
        for /f "usebackq delims=" %%i in ("0001.txt") do echo  %%i
)

endlocal
exit /b 0


Foreigner 29-12-2013 14:12 2280216

Имхо, лучше все таки специально написанные утилиты. Батник он такой батник, что простое echo сожрет спецсимволы, двойные пробелы, в общем может исходный файл испортить, предлагаю перейти на PowerShell или использовать утилиты:
Код:

# powershell

(gc file.txt) -replace '^',' ' | out-file file.txt

Код:

:: cmd, sed

sed "s/^/ /g" file.txt 1>file.txt


vision-d 29-12-2013 22:22 2280465

Цитата:

Цитата Foreigner
Код:
# powershell
(gc file.txt) -replace '^',' ' | out-file file.txt »

Забыл, в конце текста тоже нужен пробел. Дополните пожалуйста...

Iska 29-12-2013 22:30 2280471

Код:

@echo off
setlocal enableextensions enabledelayedexpansion

>"NewFile.txt" (
        for /f "usebackq delims=" %%i in ("0001.txt") do echo  %%i
)

endlocal
exit /b 0

Код:

$sFile = "E:\Песочница\0342\0001.txt"

(Get-Content -Path $sFile) -replace '^(.*)$', ' $1 ' | Out-File -FilePath $sFile


vision-d 29-12-2013 23:10 2280497

Помогло!
Спасибо!

vision-d 30-12-2013 18:52 2280844

Есть ещё одна задачка. Есть текстовый файл содержащий в строках номера:

HTML код:

5080679
5471
4973874
53724
532204
396

Как сделать чтобы добавлялись в строки символы?
Чтобы строки принимали следующий вид:

HTML код:

'/rsl01005080679.pdf';
'/rsl01000005471.pdf';
'/rsl01004973874.pdf';
'/rsl01000053724.pdf';
'/rsl01000532204.pdf';
'/rsl01000000396.pdf';

и вид

HTML код:

'/rsl1@005080679';
'/rsl1@000005471';
'/rsl1@004973874';
'/rsl1@000053724';
'/rsl1@000532204';
'/rsl1@000000396';
'/rsl1@005019694';


Foreigner 30-12-2013 19:07 2280849

PowerShell:
Код:

$a = gc file.txt

$a | % { "'/rsl{0:01000000000}.pdf';" -f [int]$_ }
$a | % { "'/rsl@{0:000000000}';" -f [int]$_ }


vision-d 02-01-2014 15:36 2282046

Цитата:

Цитата Iska
@echo off
setlocal enableextensions enabledelayedexpansion
>"NewFile.txt" (
for /f "usebackq delims=" %%i in ("0001.txt") do echo %%i
)
endlocal
exit /b 0 »

Этот метод подойдет для файлов в utf-8?

Iska 02-01-2014 16:46 2282097

Предпочтительнее использовать PowerShell, указывая кодировку входного и выходного файлов.

vision-d 02-01-2014 22:32 2282303

а если у меня файл (5гб) больше чем оперативки на компе (4гб) будет ли он выполнять задачу с подстановкой символов?

Iska 04-01-2014 22:57 2283103

Что-то более опытные коллеги молчат…

vision-d, выполнять задачу будет (разве что Вы принудительно отключили файл подкачки). Другое дело, что при таком объёме надо смотреть на конкретные командлеты. Например, код из ##5, 7 и 10, как я понимаю, считывают файл целиком в память. Более щадящим будет использование построчного чтения из одного файла, поиск/замена в строке и запись её в другой файл.

vision-d 15-01-2014 13:25 2289584

Цитата:

Цитата Foreigner
$a = gc file.txt
$a | % { "'/rsl{0:01000000000}.pdf';" -f [int]$_ }
$a | % { "'/rsl@{0:000000000}';" -f [int]$_ } »

Можно ли сделать тут чтобы он строки не переносил на отдельные строки, а записывал бы их сплошным текстом?

Foreigner 15-01-2014 18:07 2289783

vision-d:
Цитата:

чтобы он строки не переносил на отдельные строки, а записывал бы их сплошным текстом?
Код:

$a = gc file.txt

( $a | % { "'/rsl{0:01000000000}.pdf'" -f [int]$_ } ) -join ';'
( $a | % { "'/rsl@{0:000000000}'" -f [int]$_ } ) -join ';'


vision-d 21-03-2014 14:01 2326644

Цитата:

Цитата Foreigner
PowerShell:
Код:
$a = gc file.txt
$a | % { "'/rsl{0:01000000000}.pdf';" -f [int]$_ }
$a | % { "'/rsl@{0:000000000}';" -f [int]$_ } »

Добрый день!
Подскажите пожалуйста можно ли проставлять вместо символов 0:000000000 пробелы? Подскажите как они обозначаются...

Iska 21-03-2014 14:48 2326667

Цитата:

Цитата vision-d
Подскажите пожалуйста можно ли проставлять вместо символов 0:000000000 пробелы? Подскажите как они обозначаются... »

Formatting Types


Время: 03:36.

Время: 03:36.
© OSzone.net 2001-