sed -n
コマンド処理後の結果のみが表示されることを意味するため、結果を表示するには 'p'を追加する必要があります。- それ以外の場合、
sed -n
結果は表示されません
これは正しいですか?
sed [root@ljl ~]# cat a.txt
1111simon111
simon2222222
333simon3333
444444444444
5555555simon
simon6666666
7777777simon
888888888888
[root@ljl ~]# sed -n 's/simon/lili/gp' a.txt
1111lili111
lili2222222
333lili3333
5555555lili
lili6666666
7777777lili
[root@ljl ~]# sed -n 's/simon/lili/g' a.txt
[root@ljl ~]#
ベストアンサー1
各「ループ」の最後で編集スクリプトの最後のコマンドを実行したら、パターンスペースの現在の内容を印刷し、それを現在の入力ファイルの次の行に置き換える暗黙のsed
コマンドがあります。n
だからスクリプトはサイクルトップに戻ります。
そのオプションで始まると、このコマンド(およびスクリプトの他のコマンドn
)の出力は表示されません。n
sed
-n
使用は-n
意味しませんみんな出力がsed
抑制されます。たとえば、r
ファイルからテキストを読み取り、それを標準出力に送信するコマンドは、=
現在の行番号を印刷するコマンドと同様に、標準出力に出力を生成します。同様に、テキストを追加、挿入、および変更するためのコマンド、およびさまざまな特定の方法でテキストを出力するためのコマンド、および関係なくa
出力を生成します(これらのコマンドの特定の機能については、マニュアルを参照してください)。エラーなどは自然に標準エラーにもないように出力されます。i
c
l
P
-n
sed
-n
また、このコマンドは、質問で述べたフラグ()で使用されているコマンドp
と同様に、出力を生成します。s///
p
s///p
コマンドがパターン空間を破棄し、すぐに次のループを開始すると、あまりd
一般的に使用されていないコマンドと同様に、常にスクリプトの末尾の暗黙のエントリがスキップされます。n
D
-n
sed
このオプションは、スクリプトの先頭に使用して#n
スクリプト内で呼び出すことができます。
例:コマンドラインで使用されているかどうかにかかわらず、部分sed
文字列を含む行のみを印刷するスクリプト。HELLO
-n
#n
/HELLO/p
最初の行にする必要があります。このスクリプトでは、#n
スクリプトの明示的なコマンドによって印刷される内容を除くすべての行の印刷が抑制されます。p