Это страница справочной страницы для -n
:
-n
подавить автоматическую печать пространства шаблона
Я заметил, что когда не используется -n
для определенных операций, каждая строка печатается на стандартный вывод (и запрошенные строки печатаются дважды):
$ 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
Однако этот закон не распространяется на другие команды:
$ sed -n 's/t/T/' test.txt
$ sed 's/t/T/' test.txt
firsT
second
Third
fourTh
fifTh
Так что же -n
делать?
источник
-n
распечатки выводит каждую строку в дополнение к специально запрошенным строкам. Таким образом, в этом случае-n
подавляется печать каждой проанализированной строки . Однако в третьем и четвертом примерах поведение отличается. В тех случаях sed без-n
не выводит строки дважды, таким образом, использование-n
не подавляет печать каждой проанализированной строки, а скорее подавляет печать неизмененных строк . Мне трудно обобщать, когда поведение будет одним или другим.-n
происходит одно и то же: переключение с каждой автоматически печатаемой строки (а модификаторp
andp
на команду замены приводит к тому, что строка печатается дополнительное время) в режим, в котором строки печатаются только в том случае, если вы это специально указали (с помощьюp
команды и т. д.).-n
опцию И ТАКЖЕ добавив; p
к команде sed (напримерsed -n '2,3p; p'
, и вы получите те же результаты, что и без них. При этом-n
подавляется автоматическая печать по умолчанию, а; p
добавляется явный (в основном эквивалент ) печать.