Ini adalah entri halaman manual untuk -n
:
-n
menekan pencetakan ruang pola secara otomatis
Saya perhatikan bahwa ketika tidak digunakan -n
untuk operasi tertentu, setiap baris dicetak ke stdout (dan baris yang diminta dicetak dua kali):
$ 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
Namun, hukum ini tidak berlaku untuk perintah lain:
$ sed -n 's/t/T/' test.txt
$ sed 's/t/T/' test.txt
firsT
second
Third
fourTh
fifTh
Jadi apa yang -n
dilakukan, tepatnya?
sumber
-n
mencetak setiap baris di samping baris yang secara khusus diminta. Jadi dalam hal ini-n
menekan pencetakan setiap baris diurai . Namun dalam contoh ketiga dan keempat perilakunya berbeda. Dalam kasus-kasus sed tanpa-n
menghasilkan garis dua kali, sehingga menggunakan-n
tidak menekan pencetakan setiap baris diuraikan tetapi lebih menekan pencetakan garis tidak berubah . Saya mengalami kesulitan menggeneralisasi ketika perilaku akan menjadi satu atau yang lain.-n
melakukan hal yang sama persis: beralih dari setiap baris secara otomatis dicetak (dan pengubahp
danp
ke perintah pengganti menyebabkan garis dicetak waktu tambahan) ke mode di mana garis dicetak hanya jika Anda secara khusus mengatakannya ke (denganp
perintah dll).-n
opsi DAN JUGA menambahkan; p
ke perintah sed (misalnyased -n '2,3p; p'
, dan Anda akan mendapatkan hasil yang sama seperti Anda akan tanpa keduanya.-n
Menekan cetak otomatis default, dan; p
menambahkan eksplisit (kebanyakan setara) ) cetak.