awk FS是否有通配符?

awk FS是否有通配符?,awk,Awk,awk FS是否有通配符?在我的awk脚本中,我无法使用“^R”分隔符打印值(我不知道这是什么类型的字符)。另一方面,它可以打印带有FS=“*”和其他字符的字符。 如下图所示 awk 'BEGIN {FS="*"; i=0; ORS=""} but it can’t do with awk 'BEGIN {FS="^R"; i=0; ORS=""} 非常感谢您的帮助。^R是八进制022或十六进制12。它是ASCII DC2(设备控制2)字符 八进制 在awk中,使用\022匹配^R作为字段分隔

awk FS是否有通配符?在我的awk脚本中,我无法使用“^R”分隔符打印值(我不知道这是什么类型的字符)。另一方面,它可以打印带有FS=“*”和其他字符的字符。 如下图所示

awk 'BEGIN {FS="*"; i=0; ORS=""}
but it can’t do with
awk 'BEGIN {FS="^R"; i=0; ORS=""}

非常感谢您的帮助。

^R是八进制022或十六进制12。它是ASCII DC2(设备控制2)字符

八进制 在
awk
中,使用
\022
匹配^R作为字段分隔符:

$ echo $'one\022two\022three' 
onetwothree
$ echo $'one\022two\022three' | awk 'BEGIN {FS="\022"; i=0; ORS=""} {printf "1=%s; 2=%s; 3=%s\n",$1,$2,$3}'
1=one; 2=two; 3=three
正则表达式 可以对字段分隔符使用正则表达式。在正则表达式中,与shell globs相反,句点是通配符:

$ echo $'one\022two\022three' | awk -F'.t' '{printf "1=%s; 2=%s; 3=%s\n",$1,$2,$3}'
1=one; 2=wo; 3=hree
这里,
.t
中的句点(通配符)恰好与^R匹配

十六进制
awk
还支持十六进制表示法:

$ echo $'one\022two\022three' | awk -c -F'\x12' '{printf "1=%s; 2=%s; 3=%s\n",$1,$2,$3}'
1=one; 2=two; 3=three