Dies ist der Manpage-Eintrag für -n
:
-n
Unterdrücken Sie das automatische Drucken des Musterbereichs
Ich stelle fest , dass , wenn nicht die Verwendung -n
für bestimmte Operationen, wobei jede Zeile in stdout gedruckt wird (und die angeforderten Zeilen gedruckt zweimal):
$ 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
Dieses Gesetz gilt jedoch nicht für andere Befehle:
$ sed -n 's/t/T/' test.txt
$ sed 's/t/T/' test.txt
firsT
second
Third
fourTh
fifTh
Was -n
genau macht es also?
quelle
-n
wird jede Zeile zusätzlich zu den speziell angeforderten Zeilen ohne Ausdruck gedruckt. Somit wird in diesem Fall-n
das Drucken jeder analysierten Zeile unterdrückt . Im dritten und vierten Beispiel ist das Verhalten jedoch unterschiedlich. In diesen Fällen gibt sed without-n
die Zeilen nicht zweimal aus, daher unterdrückt die Verwendung-n
nicht das Drucken jeder analysierten Zeile , sondern das Drucken von nicht geänderten Zeilen . Ich habe Schwierigkeiten zu verallgemeinern, wann das Verhalten das eine oder andere sein wird.-n
wird genau das Gleiche getan: Wenn Sie von jeder automatisch gedruckten Zeile (und dem Modifikatorp
undp
zu einem Ersatzbefehl, wird die Zeile zusätzlich gedruckt) in einen Modus wechseln, in dem Zeilen nur gedruckt werden , wenn Sie dies ausdrücklich angeben zu (mit demp
Befehl etc).-n
Option hinzuzufügen UND AUCH; p
zum Befehl sed hinzuzufügen (z. B.sed -n '2,3p; p'
und Sie erhalten die gleichen Ergebnisse wie ohne. Der Befehl-n
unterdrückt den automatischen Standarddruck und; p
fügt einen expliziten (meistens äquivalenten) hinzu ) drucken.