2011-02-28 63 views
1
awk 'BEGIN {print FILE} 
{printf "Part\t\tStart\t\tEnd" 
printf "%s %-6s %-6d",Part1,1,$end1 
printf "%s %-6d %-6d",Part2,$start2,$end2} 
END {printf "total records:%d", $tot}' >meta.txt 

这是我的代码,不起作用。它是shell脚本的一部分,所有变量都在脚本的其他部分计算。 我的I/P文件是表,我必须找出没有。在他们的记录和dispay在一个表格式的文件,结果就像在awk中嵌套BEGIN-END块

File Start End 
File1 1  205 
file2 206 417 

回答

1

如果这些是shell变量,你需要将它们传递到AWK脚本:

awk -v "start2=$start2" -v "end1=$end1" -v "end2=$end2" -v "tot=$tot" 'BEGIN {print FILE} 
    {printf "Part\t\tStart\t\tEnd" 
    printf "%s %-6s %-6d", Part1, 1, end1 
    printf "%s %-6d %-6d", Part2, start2, end2} 
    END {printf "total records:%d", tot}' >meta.txt 
1

只有一个BEGIN和END AWK块。我其实并不真正了解你在做什么。所以我希望你展示更多的例子。然而,创造AWK文件表,你可以做到这一点在BEGIN块

awk 'BEGIN{ 
    print "field1\tfield2\n" 
    ... 
    print "one\ttwo" 
    ... 
}' > outputfile.txt 

,如果你有一个输入文件来处理,并表内容来源于此输入文件

awk 'BEGIN{ 
    print "field1\tfield2\n" 
} 
{ 
    ... 
    print "one\ttwo" 
    ... 
}END{ 
    print "so some final stuff here" 
}' inputfile > outputfile.txt 
+0

的awk“BEGIN { 打印 “字段1 \ tfield2 \ n” 个 ...... 打印 “一个\ TTWO” ... } outputfile.txt不能正常工作 – Shweta 2011-02-28 10:55:53

+0

我粘贴了我的代码 – Shweta 2011-02-28 11:07:57

+0

为什么你不显示你想要用示例输入文件做什么,并显示你想看到的输出。让我们暂且放下你以后可能使用的任何代码。 – kurumi 2011-02-28 11:37:21