awk脚本适用于纯文件,但不适用于tail + 2

时间:2016-04-19 19:50:05

标签: bash shell awk

我的脚本最多可获得3列所选文件的值。如果文件是纯的,它运行良好,但如果我尝试使用tail + 2管道文件,它就不再工作了。有代码:

 BEGIN {max1 = 0; max2 = 0; max3 = 0}
{
if(max1 < $1)
max1 = $1
if(max2 < $2)
max2 = $2
if(max3 < $3)
max3 = $3
}
END {print max1, max2, max3;}

我执行这样的代码:awk -f [codefilename] [targetfile]

100%良好

我执行这样的代码(想要在计算之前删除第一行):

awk -f [codefilename] [targetfile] |尾+ 2

失败

感谢您的帮助和时间。

1 个答案:

答案 0 :(得分:1)

考虑你的例子:

awk -f codefilename targetfile | tail+2

首先,您需要tail+2之间的空格。其次发生的事情是awk命令的输出是通过管道传输到尾部所以它基本上就像写作:

awk -f codefilename targetfile > tmp1
tail +2 tmp1

我想你想要的是从targetfile获取除第一行之外的所有内容并在其上运行你的awk代码,如果你需要这样的话:

tail +2 targetfile | awk -f codefilename

所有发行版都不支持Afaik tail +N,而您需要sed -n '2,$p'之类的内容。如果有人可以澄清,请做。