awk FS是否有通配符?
awk FS是否有通配符?在我的awk脚本中,我无法使用“^R”分隔符打印值(我不知道这是什么类型的字符)。另一方面,它可以打印带有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 '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