FS(gawk)中的脱字号(^)

ogu*_*ail 7 awk

更新资料

这是一个错误,现在git repo中提供了一个修复程序。


我不明白如何回旋FS。例如,这是我的file

$ cat file
foo bar
baz quz
Run Code Online (Sandbox Code Playgroud)

我写了这个awk脚本:

BEGIN{FS="^.";OFS="|"}{$1=$1}1
Run Code Online (Sandbox Code Playgroud)

并期待此输出:

|oo bar
|uz baz
Run Code Online (Sandbox Code Playgroud)

但是用gawk我得到了:

$ gawk 'BEGIN{FS="^.";OFS="|"}{$1=$1}1' file
||o bar
||z quz
Run Code Online (Sandbox Code Playgroud)

并带有更多点的陌生人:

$ gawk 'BEGIN{FS="^..";OFS="|"}{$1=$1}1' file
||bar
||quz
$ gawk 'BEGIN{FS="^...";OFS="|"}{$1=$1}1' file
||r
||z
$ gawk 'BEGIN{FS="^....";OFS="|"}{$1=$1}1' file
|bar
|quz
Run Code Online (Sandbox Code Playgroud)

我在POSIX awk规范gawk手册中都找不到解释。你们能帮我了解发生了什么吗?我在这里想念什么?

kva*_*our 3

这显然是一个错误,并且可能是内存泄漏。当您之前要求打印时NF,行为符合预期:

$ gawk 'BEGIN{FS="^.";OFS="|"; $0="foo"; $1=$1; print}'
||oo
$ gawk 'BEGIN{FS="^.";OFS="|"; $0="foo"; $1=$1; print NF; print}'
2
|oo
Run Code Online (Sandbox Code Playgroud)