当我调试别人写的文件时,我发现一行
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
是一个特殊变量,具有当前记录号的值(在本例中与行号相同)- so
NR>3
表示行号大于 3
- so
{l=$0}
这是将当前行(特殊变量$0
)的内容保存到用户定义的变量中l
NR>3 {print l}
当条件为真时,打印变量的内容l
因此,实际上,此代码打印输入中除前两行和最后一行之外的所有行。