Como insiro texto em números de linha específicos em um arquivo de texto?

1

Eu preciso inserir texto (especificamente o caractere FormFeed, valor ASCII 12 ou 0xC) a cada 66 linhas em um arquivo de texto em uma caixa do Windows. Existe uma ferramenta interna que pode realizar isso?

    
por Jesse 30.09.2013 / 21:20

2 respostas

2

Pode ser feito facilmente com o PowerShell, JScript ou VBScript. Mas se você quiser ficar no mundo dos lotes, precisará de algum tipo de utilitário não padrão ou programa em lote complicado.

Usando um utilitário JScript / batch híbrido chamado REPL.BAT que executa uma pesquisa em regex e substitui stdin e grava o resultado para stdout:

type "file.txt"|repl "(.*\n){66}" "$&\x0C" mx >"file.txt.new"
move /y "file.txt.new" "file.txt" >nul

O acima pressupõe que você tenha o REPL.BAT no seu diretório atual, ou melhor ainda, em algum lugar dentro do seu caminho.

    
por 30.09.2013 / 21:54
1

Se você permitir que o Powershell esteja embutido nas versões recentes do Windows, você pode fazer isso do Powershell:

(gc input.txt -raw) -replace '(.*\n){66}', "'$0$([char]0x0c)" > output.txt

Se você estiver executando o cmd.exe, você executaria isso da seguinte forma:

powershell (gc input.txt -raw) -replace '(.*\n){66}', \"'$0$([char]0x0c)\" > output.txt

Observe que o Powershell usará "codificação Unicode" quando você usar o redirecionamento > . Se você quiser uma codificação diferente, pode canalizar para out-file -encoding [oem|default|ascii|utf8] (mais informações sobre codificações aqui , sob o título -Encoding).

por exemplo:

(gc input.txt -raw) -replace '(.*\n){66}', "'$0$([char]0x0c)" | out-file -encoding utf8
    
por 01.10.2013 / 03:38

Tags