これは、-n
のマニュアルページエントリです。
-n
パターンスペースの自動印刷を抑制
notを使用して特定の操作で-n
を使用すると、各行がstdoutに出力されます(要求された行が2回出力されます)。
$ 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
は正確に何をしますか?
通常、sedは各行を処理し(置換などを行い)、結果を出力します。処理に印刷される行が含まれる場合(たとえば、sedのp
コマンド)、2回印刷されます(処理中に1回、次に自動後処理印刷によって)。 -n
オプションは自動印刷を無効にします。つまり、印刷するように特に指示していない行は印刷されず、明示的に印刷するように指示した行は(たとえばp
を使用して)取得します。一度だけ印刷されます。
sed -n '2,3p' test.txt
-要求に応じて、2〜3行目のみを出力します
sed '2,3p' test.txt
-各行を(自動的に)印刷し、さらに2〜3行目をもう一度印刷します
sed -n 's/t/T/' test.txt
-各行で "t"を "T"に置き換えますが、-n
のために結果を出力しません
sed 's/t/T/' test.txt
-各行で "t"を "T"に置き換え、結果を自動的に出力します
さらにいくつかの例を追加しましょう:
sed -n 's/t/T/p' test.txt
-各行で "t"を "T"に置き換え、置換が行われた行のみを出力します(つまり "秒"ではありません)
sed 's/t/T/p' test.txt
-各行で "t"を "T"に置き換え、置換が行われた行を印刷してから、各行を自動的に印刷します(結果: "second"が1回、その他すべてが2回)
sed '2,3p; 3p' test.txt
-1、4、および5行目を1回印刷します(自動印刷)。 2行目を2回(最初のp
コマンド、次に自動印刷)、3行目を3回(各p
コマンドごとに1回、次に自動的に)。