Normalmente, o sed processa cada linha (fazendo substituições, etc.) e imprime o resultado. Se o processamento envolver a linha impressa (por exemplo, o comando p
do sed), ela será impressa duas vezes (uma vez durante o processamento e novamente pela impressão automática de pós-processamento). A opção -n
desativa a impressão automática, o que significa que as linhas que você não especifica para imprimir não são impressas, e as linhas explicitamente informadas para impressão (por exemplo, com p
) são impressas apenas uma vez. / p>
-
sed -n '2,3p' test.txt
- imprime apenas as linhas 2 a 3, conforme solicitado -
sed '2,3p' test.txt
- imprime cada linha (automaticamente) E TAMBÉM imprime as linhas 2-3 uma segunda vez -
sed -n 's/t/T/' test.txt
- substitui "t" por "T" em cada linha, mas não imprime o resultado devido a-n
-
sed 's/t/T/' test.txt
- substitui "t" por "T" em cada linha e imprime automaticamente o resultado
E deixe-me adicionar mais alguns exemplos:
-
sed -n 's/t/T/p' test.txt
- substitui "t" por "T" em cada linha, imprime APENAS linhas onde a substituição ocorreu (ou seja, não "segundo") -
sed 's/t/T/p' test.txt
- substitui "t" por "T" em cada linha, imprime linhas onde a substituição ocorreu e, em seguida, imprime automaticamente cada linha (resultado: "segundo" é impresso uma vez, todos os outros duas vezes) -
sed '2,3p; 3p' test.txt
- imprime as linhas 1, 4 e 5 uma vez (a impressão automática); linha 2 duas vezes (o primeiro comandop
e depois a impressão automática) e a linha 3 três vezes (uma vez para cada comandop
, depois novamente automaticamente).