什么! NR%2 在此命令中意味着什么?

What does ! and NR%2 means in this command?

我有这个命令,它会从第一行开始每隔两行打印一次:

ls -l | awk '!(NR%2){print}'

我理解第一部分 (ls -l) 中发生的事情,但我不理解“!(NR%2)”部分。

你能解释一下吗?

NR是当前记录(行,你的情况)编号,从1开始,%是取模运算符; NR%2NR为偶数时为0,NR为奇数时为1。 ! 是一个布尔否定,所以当 NR 可以被 2 整除时 !(NR%2) 计算结果为真,否则计算结果为假。所以每隔一条记录打印一次。