Вставить после каждой 10 строки пустую строку
Как в txt файле после каждой 10 строки вставить пустую строку?
|
Если в изначальном текстовом файле нет пустых строк, то, например, так:
читать дальше »
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFile=0001.txt
set sDestFile=0002.txt
if exist "%sSourceFile%" (
set /a iCount = 1
>"%sDestFile%" (
for /f "usebackq delims=" %%i in ("%sSourceFile%") do (
echo %%i
if !iCount! lss 10 (
set /a iCount += 1
) else (
echo.
set /a iCount = 1
)
)
)
) else (
echo Can't find source file [%sSourceFile%].
)
endlocal
exit /b 0
|
Mycry,
гнутый sed
Код:
@echo off
1>file.tmp sed "10~10 s/$/\n/" file.txt
move file.tmp file.txt
|
Большое спасибо Iska и Foreigner. Остановился на первом варианте.
|
;).
PowerShell:
Код:
$sSourceFile = "E:\Песочница\0304\0001.txt"
$sDestFile = "E:\Песочница\0304\0002.txt"
if(Test-Path -Path $sSourceFile -PathType Leaf) {
Get-Content -Path $sSourceFile | ForEach-Object -Process {
$_
if($_.ReadCount % 10 -eq 0) {
""
}
} | Set-Content -Path $sDestFile
} else {
Write-Host -ForegroundColor Red "Can't find source file [$sSourceFile]."
}
|
Iska, Я тоже подумал про Powershell, но выбрал sed:
Код:
$a = gc file.txt
$i = 0; $( while ($i -le ($a.count-1)) { $a[$i..($i+9)]; ''; $i+=10 } ) | sc file.txt
Или через for:
Код:
$a = gc file.txt
$(for ($i = 0; $i -le ($a.count-1); $i+=10) { $a[$i..($i+9)]; '' }) | sc file.txt
|
Foreigner, в обоих случаях — лишняя пустая строка в конце результирующего файла.
|
Iska, Действительно, можно попробовать так:
Код:
$a = gc file.txt
for ($i = 1; $i -le ($a.count % 10); $i++) { $a[$i * 10 - 1] += "`n" }
$a | sc file.txt
|
Время: 05:52.
© OSzone.net 2001-