Como inserir uma linha entre duas linhas que correspondam a um determinado padrão no Notepad ++

1

Este é o meu arquivo de texto

echo Move date ahead 18 days to 30-09-2016
date 30-09-2016
echo Basic Rule Backups
echo Move date ahead 1 day to 1-10-2016
date 1-10-2016
echo date ahead 1 day to 2-10-2016
date 2-10-2016

Usando o Notepad ++ ou até mesmo o Bloco de Notas, existe uma maneira de adicionar uma linha adicional "pause" somente se a linha seguinte for um comando "date".
Essencialmente, esta deve ser a saída após a substituição.

echo Move date ahead 18 days to 30-09-2016
pause
date 30-09-2016
echo Basic Rules 
echo Move date ahead 1 day to 1-10-2016
pause
date 1-10-2016
echo date ahead 1 day to 2-10-2016
pause
date 2-10-2016

Se eu puder uma expressão regular geral que possa me ajudar em todas essas substituições, eu realmente aprecio que

    
por Dhiwakar Ravikumar 12.08.2015 / 07:31

2 respostas

1

Como insiro uma linha antes de outra linha que corresponda a um padrão?

  • Menu "Pesquisar" > "Substituir" (ou Ctrl + H )

  • Defina "Localizar o que" como ^(date.*)$

  • Defina "Substituir por" como pause\r\n

  • Ativar "Expressão regular"

  • Clique em "Substituir tudo"

Notas:

  • OtextoacimaassumequevocêestáeditandoumarquivodetextocomEOLsdoWindows,\r\n.

  • SevocêestiverusandoarquivoscomdiferentesEOLs,poderáconvertê-losemEOLsdoWindowsusandoomenu"Editar" > "Conversão EOL".

  • Se você não está trabalhando com o Windows EOL e não deseja convertê-los, use o seguinte:

    • Use \n em vez de \r\n para EOLs do Unix / OS X

    • Use \r em vez de \r\n para EOLs do Mac OS (até a versão 9)

Outras leituras

por 12.08.2015 / 09:18
1

Como discutido nos comentários da questão, aqui está o script bash que cumprirá esse propósito. Felicidades

#!/bin/bash
### set input and output file names
input=test.txt
output=pause.txt

## run the script
while read foo; do echo $foo >> $output
   if [ "$(echo $foo | grep date)" != "" ]
      then echo "pause" >> $output
   fi
done < $input


### EXPLANATION
### The while loop runs until the input runs out of lines
### It takes one line and echo it out in a new file
### It makes an if check. It takes the line and checks if there is the 
### word 'date' in it. If yes, then the whole line will be the output,
### if no, it will be empty
### The if check checks if it is empty. If it is not empty
### (,hence date was present), it adds an additional line 
### saying 'pause' into the new file
### you will end up with two files. One with, one without pause.

EDIT 1:

Como DavidPostill apontou, eu não entendi o pedido. Mas repetir a pausa antes de escrever a linha e adicionar uma verificação invertida adicional para echo (fica em branco quando o eco é encontrado) deve fazer o trabalho. Obrigado David!

 #!/bin/bash
### set input and output file names
input=test.txt
output=pause.txt

## run the script
while read foo; do
   if [ "$(echo $foo | grep date | grep -v echo)" != "" ]
      then echo "pause" >> $output
   fi
    echo $foo >> $output
done < $input
    
por 12.08.2015 / 09:08