Não é possível replicar com o GNU sed
4.2.2:
home:~/scratch/
$ sed -ne '/Word A/,/Word D/p' input
Word A
Word B
Word C
Word D
home:~/scratch/
$ cat input
Word A
Word B
Word C
Word D
Word E
Word F
Word D
Word G
Eu tenho um arquivo de log enorme que pode repetir valores repetidamente. Eu quero grep um conjunto como o Word A para o Word D, mas pare após uma partida. no abaixo, tudo começa de novo.
sed -n -e '/Word A/,/Word D/ p'
Como você pode fazê-lo parar depois de encontrar o primeiro "Word D"
Word A
Word B
Word C
Word D
Word E
Word F
Word D
Word G
Resultado esperado com sed -n -e '/ Word A /, / Word D / p'
Word A
Word B
Word C
Word D
Resultado real:
Word A
Word B
Word C
Word D
Word E -> should not exist
Word F -> should not exist
Word D -> should not exist
Word G -> should not exist
Não é possível replicar com o GNU sed
4.2.2:
home:~/scratch/
$ sed -ne '/Word A/,/Word D/p' input
Word A
Word B
Word C
Word D
home:~/scratch/
$ cat input
Word A
Word B
Word C
Word D
Word E
Word F
Word D
Word G
Eu não consigo reproduzir isso com o sed
do OpenBSD nem com o GNU sed
.
Se os dados tivessem sido
Word A Word B Word C Word D Word E Word F Word A Word D Word G
(observe a linha extra Word A
)
$ sed -n -e '/Word A/,/Word D/p' data.in
Word A
Word B
Word C
Word D
Word A
Word D
Se você quisesse apenas o primeiro bit dessa saída:
$ sed -n -e '/Word A/,/Word D/p' -e '/Word D/q' data.in
Word A
Word B
Word C
Word D
Descobri que meu problema estava com um caractere de escape incorreto. Obrigado pelas dicas todas
for /f "tokens=* " %%e in ('sed -n "/\/ios\/mdm2\/%Perimeter%.*DEBUG MDM payload/,/<\/plist>/p" %log%') do ( echo %%e > file.txt)
Tags sed