gpt4 book ai didi

awk - FS 中的脱字符 (^) (gawk)

转载 作者:行者123 更新时间:2023-12-04 12:38:54 24 4
gpt4 key购买 nike

更新
这是一个错误,修复程序在 git repo 中可用现在。

我无法理解 FS 中的抑扬符被解释。
例如,这是我的 file :

$ cat file
foo bar
baz quz
我写了这个 awk 脚本:
BEGIN{FS="^.";OFS="|"}{$1=$1}1
并期待这个输出:
|oo bar
|uz baz
但是用gawk我得到了这个:
$ gawk 'BEGIN{FS="^.";OFS="|"}{$1=$1}1' file
||o bar
||z quz
有了更多的点,它变得更奇怪了:
$ 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
我在 POSIX awk specification 中都找不到解释也不是 gawk manual .你们能帮我理解发生了什么吗?我在这里缺少什么?

最佳答案

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

$ gawk 'BEGIN{FS="^.";OFS="|"; $0="foo"; $1=$1; print}'
||oo
$ gawk 'BEGIN{FS="^.";OFS="|"; $0="foo"; $1=$1; print NF; print}'
2
|oo

关于awk - FS 中的脱字符 (^) (gawk),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55706668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com