sed式の意味クエリ

sed式の意味クエリ

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'sed2~21~2~sed

awkを使用すると、デフォルトでは現在の入力ファイルの行番号で、汎用モジュラス演算子と同じ効果を得ることができます。awk '(FNR % 2) == 0'FNR%

関連情報