awk打印条件

awk打印条件

当我调试别人写的文件时,我发现一行

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是一个特殊变量,具有当前记录号的值(在本例中与行号相同)
    • soNR>3表示行号大于 3
  • {l=$0}这是将当前行(特殊变量$0)的内容保存到用户定义的变量中l
  • NR>3 {print l}当条件为真时,打印变量的内容l

因此,实际上,此代码打印输入中除前两行和最后一行之外的所有行。

相关内容