Como faço para encontrar uma palavra e adicionar texto depois em um arquivo .txt?

4

Como posso encontrar uma palavra (por exemplo, "/ dn") em um arquivo de texto e adicionar na próxima linha outra palavra (por exemplo, "/ period")?

Eu gostaria de executá-lo usando o MS DOS.

Eu quero dizer isso "/ dn" (depois / dn é espaço) é uma palavra (não um fragmento do texto, mas a palavra inteira - depois / dn pode ser outra palavra na mesma linha) que eu quero encontre e depois depois na próxima linha nova, não substituindo as outras linhas e outras palavras. Quero dizer, criar uma nova linha entre linhas já existentes.

Por exemplo, se eu tiver este arquivo de entrada:

/dn
/name

Eu quero essa saída:

/dn
/period
/name

e o símbolo "/" deve estar com dn, não sem ele.

    
por Lunsy 26.07.2017 / 12:32

2 respostas

10

1. Usando sed append

Se você quiser uma linha completamente nova com a palavra /period depois de cada linha contendo /dn , use sed append:

sed '\:\dn:a/period' filename

a saída para sua amostra seria:

/dn
/period
/name

1. Notas

  • :\dn: pesquisa por \dn
  • a/period append /period para a próxima linha (uma nova linha).

2. Pesquise e anexe no final da próxima linha

Se você quiser o /period no final da próxima linha, use-o assim:

sed ':/dn: { N; s:$:/period: }' filename

Aqui está uma entrada de amostra:

/dn
/name

e a saída:

/dn
/name /period

2. Notas

Primeiro, estamos pesquisando por linhas com /dn , depois adicionamos o /period no final de ( $ ) da próxima linha ( N; ).

    
por Ravexina 26.07.2017 / 12:45
0

Se file.txt contiver a string /dn , então Você pode executar este comando:

$ grep -i "\/dn" file.txt | xargs -I{} printf "%s\n/period" {}

imprimirá

/dn
/period
    
por Michal Przybylowicz 26.07.2017 / 12:45