awk手册指出,
FS可以在命令行上设置。使用`-F'参数即可。
(...)
传递给`-F'的参数值与对内置变量FS的赋值处理方式完全相同。
然而,我注意到如果将其设置为空字符串,则存在差异。在我的
这个有效:
但这个不会:
为什么?这是因为将
-v FS
和-F
都是设置字段分隔符的等效方式。
GNU Awk用户手册 -> 4.5.4从命令行设置FS:FS可以在命令行上设置。使用`-F'参数即可。
(...)
传递给`-F'的参数值与对内置变量FS的赋值处理方式完全相同。
然而,我注意到如果将其设置为空字符串,则存在差异。在我的
GNU Awk 4.1.1
上进行测试。这个有效:
$ awk -F, '{print $2}' <<< "a,b,c"
b
$ awk -v FS=, '{print $2}' <<< "a,b,c"
b
但这个不会:
$ awk -F="" '{print $2}' <<< "abc"
# $1 contains abc
$ awk -v FS="" '{print $2}' <<< "abc"
b
为什么?这是因为将
FS
设置为空只在gawk
中有效吗?
=
。 - 123awk -F="" '{print $2}' <<< "ab=c"
返回c
。 - fedorqui