奇妙な印刷条件

奇妙な印刷条件

他の人が作成したファイルをデバッグ中に、次の行が見つかりました。

psql -U user -h $2 -p 5432 mydb -c "set search_path=$3;$4" | awk 'NR>3 {print l} {l=$0}'

私は何を知らない

awk 'NR>3 {print l} {l=$0}' 

このラインは本当に大丈夫ですか?この行が何を意味するのかを説明できる人はいますか?{print l}

ベストアンサー1

コマンドを説明する簡単な入力:

$ seq 6 | awk 'NR>3 {print l} {l=$0}'
3
4
5
  • NR現在のレコード番号の値を持つ特殊変数(この場合は行番号と同じ)。
    • これはNR>3行番号が3より大きいことを意味します。
  • {l=$0}$0現在の行(特殊変数)の内容をカスタム変数に保存します。l
  • NR>3 {print l}条件が true の場合、変数の内容を印刷します。l

したがって、実際には、このコードは最初の2行と最後の行を除く入力のすべての行を印刷します。

おすすめ記事