我需要打印出特定记录,即尾部的3d,即NR ==总NR-2。我一直试图这样做差不多一个小时但仍然无法让它工作,所以这就是我所拥有的:
cat myfile | grep mystring | awk 'END {NR == $(NR-2); print $0}'
这给了我最后的NR,为什么?
答案 0 :(得分:2)
awk
处理每一行并在完成后抛出它,你必须手动保存它[N.B.您的NR == $(NR-2)
检查行数是否等于最后一行中的(行数 - 2)字段]。最简单的方法是将它们全部存储起来,但这并不是非常有效,所以我们只能存储我们见过的最后三个。实际上最简单的方法是使用head
和tail
:
grep mystring myfile | tail -n3 | head -n1
或awk
:
awk '/mystring/{three = two; two = one; one = $0} END{print three}' myfile
答案 1 :(得分:0)