O documento dos sed
estados que d
irá:
Exclua o espaço do padrão; iniciar imediatamente o próximo ciclo.
Se sed
for executado sem -n
, sed
imprimirá automaticamente o espaço de padrão após um d
comando? Eu sei que nesta situação, o espaço do padrão está vazio. Então não há diferenças para imprimir ou não. Mas estou apenas curioso.
Eu tenho este exemplo:
root@u1804:~# seq 10 | sed -r '/5/d'
1
2
3
4
6
7
8
9
10
root@u1804:~#
Como você pode ver, não existe 5
. É porque d
causou a execução diretamente no próximo ciclo ou o espaço de padrão de impressão automática imprime uma string vazia?
Sim,
d
reinicia o ciclo para que não haja impressão automática. É fácil ver que, se você tentar anexar ao espaço do padrão após umd
comando, por exemplo, viaG
ous/^/STUFF/
nada for impresso ...Tente
seq 3 | sed '1h;2d;2G'
- não será impresso1
duas vezes, mesmo que você o salve1h
e tente anexá-lo pelo2G
simples motivo o último comando nunca é executado - tudo o que vem depoisd
(incluindo a impressão automática) é ignorado (para o endereço atual).O padrão é bem claro :
Também está no manual que você citou: