Substitua o texto no número da linha específica por outro texto usando o notepad ++

1

Eu tenho centenas de arquivos de entrada que são muito semelhantes, mas contêm pequenas diferenças. Eu quero substituir cada linha 4 em todos os documentos abertos com outra linha de texto. A função de pesquisa e substituição não funciona, já que a linha 4 tem texto diferente nos vários arquivos.

Um exemplo grosseiro do que eu quero fazer é mostrado abaixo:

arquivo A linha 4: algum texto

arquivo B linha 4: texto diferente

substitua a linha 4 por: novo texto

    
por SoilSciGuy 28.06.2016 / 21:21

2 respostas

3

Eu diria que o Notepad ++ não é a ferramenta para fazer este trabalho.

Em vez disso, sugiro que você use uma linguagem de script de algum tipo para:

  • iterar os arquivos
  • depois, repita as linhas
  • substitua a linha única (se existir)
  • salve o arquivo.

Aqui está um script do PowerShell que fará isso:

# Set by user to their needs.
$filesToCheck = "C:\path\to\files\*.txt"
$lineToChange = 4
$replacementLineText = "New Text"

# Gather list of files based on the path (and mask) provided by user.
$files = gci $filesToCheck

# Iterate over each file.
foreach ($file in $files) {

    # Load the contents of the current file.
    $contents = Get-Content $file

    # Iterate over each line in the current file.
    for ($i = 0; $i -le ($contents.Length - 1); $i++) {

        # Are we on the line that the user wants to replace?
        if ($i -eq ($lineToChange - 1)) {

            # Replace the line with the Replacement Line Text.
            $contents[$i] = $replacementLineText

            # Save changed content back to file.
            Set-Content $file $contents
        }
    }
}
    
por 28.06.2016 / 21:39
0

Procure por expressão regular:

^(([^\n]*\n){n})[^\n]+

onde "n" é o número da linha a ser ignorada e substituída por

text

em que text é o novo texto que você deseja na linha n + 1.

Adapte a expressão de pesquisa com o EOL adequado, usei "\ n" para o UNIX.

Explicação:

Este script procura as primeiras n linhas para pular:

([^\n]*\n){n}

e os salva em um buffer (colchetes entre eles:

(([^\n]*\n){n})

seguido pela outra linha (não vazia):

([^\n]+)

então substitui pelo conteúdo do buffer


seguido pelo seu novo texto.

text

Informações adicionais:

Se você quer ter mais certeza, e os arquivos não são grandes, você também pode combinar as seguintes linhas:

^(([^\n]*\n){n})[^\n]+(\n([^\n]*\n){n})

substitua por

text

Não testado.

    
por 05.09.2017 / 12:15