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

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

Mycry 30-07-2013 21:05 2193581

Вставить после каждой 10 строки пустую строку
 
Как в txt файле после каждой 10 строки вставить пустую строку?

Iska 30-07-2013 21:16 2193585

Если в изначальном текстовом файле нет пустых строк, то, например, так:
читать дальше »
Код:

@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


Foreigner 30-07-2013 21:46 2193596

Mycry,
гнутый sed
Код:

@echo off

1>file.tmp sed "10~10 s/$/\n/" file.txt
move file.tmp file.txt


Mycry 30-07-2013 21:55 2193602

Большое спасибо Iska и Foreigner. Остановился на первом варианте.

Iska 30-07-2013 22:24 2193612

Цитата:

Цитата Foreigner
гнутый sed »

;).

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]."
}


Foreigner 30-07-2013 22:47 2193621

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


Iska 30-07-2013 23:24 2193645

Foreigner, в обоих случаях — лишняя пустая строка в конце результирующего файла.

Foreigner 30-07-2013 23:54 2193660

Iska, Действительно, можно попробовать так:
Код:

$a = gc file.txt
for ($i = 1; $i -le ($a.count % 10); $i++) { $a[$i * 10 - 1] += "`n" }
$a | sc file.txt


Iska 31-07-2013 00:05 2193663

Только «`r`n» ;).


Время: 05:52.

Время: 05:52.
© OSzone.net 2001-