To jest wpis strony podręcznika dla -n
:
-n
wyłącz automatyczne drukowanie przestrzeni wzorów
Zauważam, że gdy nie używam -n
do niektórych operacji, każda linia jest drukowana na standardowym wyjściu (a żądane linie są drukowane dwukrotnie):
$ 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
Jednak to prawo nie dotyczy innych poleceń:
$ sed -n 's/t/T/' test.txt
$ sed 's/t/T/' test.txt
firsT
second
Third
fourTh
fifTh
Co -n
dokładnie robi ?
źródło
-n
wydrukowano każdej linii oprócz tych, które zostały specjalnie zamówione. Zatem w takim przypadku-n
pomija drukowanie każdej przeanalizowanej linii . Jednak w trzecim i czwartym przykładzie zachowanie jest inne. W takich przypadkach-n
funkcja sed bez nie wysyła wierszy dwa razy, dlatego użycie-n
nie wstrzymuje drukowania każdej przeanalizowanej linii, ale raczej wstrzymuje drukowanie niezmienionych linii . Mam trudności z uogólnieniem, kiedy zachowanie będzie jedno lub drugie.-n
robi dokładnie to samo: przejście z każdej linii, która jest automatycznie drukowana (a modyfikatorp
ip
na komendę zastępczą powodują dodatkowe drukowanie linii) do trybu, w którym linie są drukowane tylko wtedy, gdy wyraźnie to powiesz do (za pomocąp
polecenia itp.).-n
opcję ORAZ RÓWNIEŻ dodając; p
do polecenia sed (np.sed -n '2,3p; p'
Uzyskasz takie same wyniki, jak bez nich.-n
Pomija domyślny automatyczny wydruk, a; p
dodaje wyraźne (w większości równoważne) ) druk