AWK 命令显示页眉、转换和页脚?

AWK 命令显示页眉、转换和页脚?

我使用了以下命令,

awk 'BEGIN{print "Header"};{FIELDWIDTHS ="3 4 3"}{print $1"|"$2"|"$3"
|"};END{print "Footer"}' file8

实际的 -

Header
1234567890|||
234|5678|901|
345|6789|012|
098|7654|321|
Footer

期待 -

Header
123|4567|890|
234|5678|901|
345|6789|012|
098|7654|321|
Footer

答案1

您的第一行出现错误,因为{FIELDWIDTHS ="3 4 3"}只有在读取并解析第一行之后才会应用该操作。

如果将FIELDWIDTHS定义移动到块内,BEGIN它将按预期工作:

awk 'BEGIN{print "Header"; FIELDWIDTHS ="3 4 3"}{print $1"|"$2"|"$3"|"};END{print "Footer"}' file8

请注意,FIELDWIDTHS可能仅在 GNU Awk ( ) 中受支持gawk

答案2

通过以下命令实现并且效果也很好

命令:

awk 'NR==1{$0=substr($1,1,3)"|"substr($1,4,3)"|"substr($1,6,3)"|"}1'    filename

输出

 awk 'NR==1{$0=substr($1,1,3)"|"substr($1,4,3)"|"substr($1,6,3)"|"}1' l.txt 
123|456|678|
234|5678|901|
345|6789|012|
098|7654|321|
Footer

相关内容