Esta es la entrada de la página del manual para -n
:
-norte
suprimir la impresión automática del espacio del patrón
Noto que cuando no se usa -n
para ciertas operaciones, cada línea se imprime en stdout (y las líneas solicitadas se imprimen dos veces):
$ cat test.txt
first
second
third
fourth
fifth
$ sed -n '2,3p' test.txt
second
third
$ sed '2,3p' test.txt
first
second
second
third
third
fourth
fifth
Sin embargo, esta ley no es válida para otros comandos:
$ sed -n 's/t/T/' test.txt
$ sed 's/t/T/' test.txt
firsT
second
Third
fourTh
fifTh
Entonces, ¿qué hace -n
exactamente?
fuente
-n
imprimir cada línea, además de las líneas solicitadas específicamente. Por lo tanto, en ese caso-n
suprime la impresión de cada línea analizada . Sin embargo, en el tercer y cuarto ejemplos, el comportamiento es diferente. En esos casos, sed sin-n
no genera las líneas dos veces, por lo tanto, el uso-n
no suprime la impresión de cada línea analizada, sino que suprime la impresión de líneas no modificadas . Tengo dificultades para generalizar cuándo el comportamiento será uno u otro.-n
está haciendo exactamente lo mismo: cambiar de cada línea que se imprime automáticamente (y el modificadorp
yp
a un comando sustituto hace que la línea se imprima más veces) a un modo en el que las líneas se imprimen solo si se lo indica específicamente a (con elp
comando, etc.).-n
opción Y TAMBIÉN agregue; p
al comando sed (por ejemplosed -n '2,3p; p'
, y obtendrá los mismos resultados que tendría sin ninguno.-n
Suprime la impresión automática predeterminada y; p
agrega una explícita (en su mayoría equivalente ) imprimir.