如何在GNU Awk 4.2中跳过具有字段宽度的字符?
它包含许多有趣的特性。其中之一是:如何在GNU Awk 4.2中跳过具有字段宽度的字符?,awk,gnu,gawk,Awk,Gnu,Gawk,它包含许多有趣的特性。其中之一是: FIELDWIDTHS解析语法已得到增强,允许指定在字段开始之前跳过多少个字符。它还允许将“*”指定为最后一个字符,表示“记录的其余部分”。使用FIELDWIDTHS拆分字段现在可以正确设置NF。手册中的FieldWidth文档也进行了相当大的重组和改进 我测试了*东西,很好地将最后一个块捕获到$NF: # "*" catches in $NF from the 2+2+1=5th character and until the end $ awk 'BEGI
*
东西,很好地将最后一个块捕获到$NF
:
# "*" catches in $NF from the 2+2+1=5th character and until the end
$ awk 'BEGIN {FIELDWIDTHS="2 2 *"} {print $NF}' <<< "1234567890"
567890
#“*”从2+2+1=5个字符直到结尾捕捉$NF
$awk'BEGIN{FIELDWIDTHS=“2*”}{print$NF}GNUawk文档有一个部分,其中定义了FIELDWIDTHS
id。
该部分/段落还有一些注释,可以说明新功能“在给字段赋值之前跳过字符”
此处(突出显示)来自:
字段宽度
#
以空格分隔的列列表,告诉gawk
如何使用固定的列边界分割输入。从版本4.2开始,每个
字段宽度可以选择前面加冒号分隔的值
指定字段开始前要跳过的字符数。
将值指定给FIELDWIDTHS
会覆盖对
字段拆分
实践情况:
假设我们想在第一个字段前跳过3个字符,在第二个字段前跳过1个字符
awk 'BEGIN {FIELDWIDTHS="3:2 1:2 *"} {print $1, $2}' <<< "1234567890"
因此3:2
跳过123
并设置45
和1:2
跳过6并设置78
45 78