Показать полную графическую версию : Как вставить пробелы в строки
vision-d
28-12-2013, 23:47
Привет всем отзывчивым!
Помогите плиз. Нужно вставить в начало строк пробелы. В ручную не реально сделать (список длиннющий). Посоветуйте что-нибудь!
Нужно вставить в начало строк пробелы. »
Куда, в текстовый файл? Опять вопросы: а) с кодировкой файла, б) с наличием пустых строк.
vision-d
29-12-2013, 12:28
Да, это текстовый файл. Кодировка 1251, без пустых строк.
@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
Имхо, лучше все таки специально написанные утилиты. Батник он такой батник, что простое echo сожрет спецсимволы, двойные пробелы, в общем может исходный файл испортить, предлагаю перейти на PowerShell или использовать утилиты:
# powershell
(gc file.txt) -replace '^',' ' | out-file file.txt
:: cmd, sed (http://gnuwin32.sourceforge.net/packages/sed.htm)
sed "s/^/ /g" file.txt 1>file.txt
vision-d
29-12-2013, 22:22
Код:
# powershell
(gc file.txt) -replace '^',' ' | out-file file.txt »
Забыл, в конце текста тоже нужен пробел. Дополните пожалуйста...
@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
Помогло!
Спасибо!
vision-d
30-12-2013, 18:52
Есть ещё одна задачка. Есть текстовый файл содержащий в строках номера:
5080679
5471
4973874
53724
532204
396
Как сделать чтобы добавлялись в строки символы?
Чтобы строки принимали следующий вид:
'/rsl01005080679.pdf';
'/rsl01000005471.pdf';
'/rsl01004973874.pdf';
'/rsl01000053724.pdf';
'/rsl01000532204.pdf';
'/rsl01000000396.pdf';
и вид
'/rsl1@005080679';
'/rsl1@000005471';
'/rsl1@004973874';
'/rsl1@000053724';
'/rsl1@000532204';
'/rsl1@000000396';
'/rsl1@005019694';
Foreigner
30-12-2013, 19:07
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
@echo off
setlocal enableextensions enabledelayedexpansion
>"NewFile.txt" (
for /f "usebackq delims=" %%i in ("0001.txt") do echo %%i
)
endlocal
exit /b 0 »
Этот метод подойдет для файлов в utf-8?
Предпочтительнее использовать PowerShell, указывая кодировку входного и выходного файлов.
vision-d
02-01-2014, 22:32
а если у меня файл (5гб) больше чем оперативки на компе (4гб) будет ли он выполнять задачу с подстановкой символов?
Что-то более опытные коллеги молчат…
vision-d, выполнять задачу будет (разве что Вы принудительно отключили файл подкачки). Другое дело, что при таком объёме надо смотреть на конкретные командлеты. Например, код из ##5, 7 и 10, как я понимаю, считывают файл целиком в память. Более щадящим будет использование построчного чтения из одного файла, поиск/замена в строке и запись её в другой файл.
vision-d
15-01-2014, 13:25
$a = gc file.txt
$a | % { "'/rsl{0:01000000000}.pdf';" -f [int]$_ }
$a | % { "'/rsl@{0:000000000}';" -f [int]$_ } »
Можно ли сделать тут чтобы он строки не переносил на отдельные строки, а записывал бы их сплошным текстом?
Foreigner
15-01-2014, 18:07
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
PowerShell:
Код:
$a = gc file.txt
$a | % { "'/rsl{0:01000000000}.pdf';" -f [int]$_ }
$a | % { "'/rsl@{0:000000000}';" -f [int]$_ } »
Добрый день!
Подскажите пожалуйста можно ли проставлять вместо символов 0:000000000 пробелы? Подскажите как они обозначаются...
Подскажите пожалуйста можно ли проставлять вместо символов 0:000000000 пробелы? Подскажите как они обозначаются... »
Formatting Types (http://msdn.microsoft.com/en-us/library/26etazsy(v=vs.110).aspx)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.