linux – 使用awk实现尾部

好吧,所以在这里,我正在努力与这个awk代码,它应该模仿tail命令

num=$1;
{
    vect[NR]=$0;

}
END{
    for(i=NR-num;i<=NR;i++)
            print vect[$i]
}

所以我在这里想要实现的是由awk模拟的tail命令
例如考虑cat somefile | awk -f tail.awk 10
shoud打印文本文件的最后10行,有什么建议吗?

解决方法:

for(i=NR-num;i<=NR;i++)
    print vect[$i]

$表示位置参数.使用简单的i:

for(i=NR-num;i<=NR;i++)
    print vect[i]

我有用的完整代码是:

#!/usr/bin/awk -f
BEGIN{
        num=ARGV[1];
        # Make that arg empty so awk doesn't interpret it as a file name.
        ARGV[1] = "";
}
{
        vect[NR]=$0;
}
END{
        for(i=NR-num;i<=NR;i++)
                print vect[i]
}

你可能应该在END中添加一些代码来处理NR< NUM.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...