
bash
最初からこんな表情ラインがありました。これが何を意味するのか分かりません。
マニュアルの意味sed
とオプションは知っていますが、-n
最後の部分の意味はわかりません。
sed -n "n;p"
答え1
n
現在の行処理をスキップして次の行を読みます。より正確には、このコマンドは、sedの現在の作業バッファ(正確な用語「パターンスペース」)を次の行に置き換えます。p
印刷してください。
暗黙的な印刷が抑制されるため、-n
結果として 1 行ずつろ過して印刷されます。
また見てくださいsed マニュアル。
答え2
これはシェルとは何の関係もなく、bash
単に実行に使用するだけですsed
。
n
のeditコマンドはsed
現在のバッファを出力します。ただし、デフォルトの出力がオフになっていない場合-n
(表示されたコマンド例のように)、次の行がバッファに読み込まれます。
editコマンドは、使用するかどうかにp
関係なく現在のバッファを出力します。-n
その結果、入力の最初の行から始まり、2行目がすべて削除され、残りの行が印刷されます。
sed -n '2~2p'
効果はGNUを使用する場合と使用する場合と同じですsed '2~2!d'
。これは「2行目から始まる2行目」を意味し、「1行目から始まる2行目」を意味する。アドレス範囲修飾子は GNU 拡張です。sed '1~2d'
sed
2~2
1~2
~
sed
awk
を使用すると、デフォルトでは現在の入力ファイルの行番号で、汎用モジュラス演算子と同じ効果を得ることができます。awk '(FNR % 2) == 0'
FNR
%