awk手册指出-v FS
和-F
都是设置字段分隔符的等效方法。
The GNU Awk User’s Guide -> 4.5.4 Setting FS from the Command Line:
可以在命令行上设置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
吗?
答案 0 :(得分:5)
为什么呢?这是因为将FS设置为空是特定的傻瓜吗?
请注意,如果将空字符串分配给FS
,标准会指出结果未指定。某些版本的awk
将生成您在示例中显示的输出。 awk
上的OS/X
版本会发出警告和输出。
awk: field separator FS is empty
因此,将FS
设置为空字符串的特殊含义在每个awk
中都不起作用。
答案 1 :(得分:4)
看起来你可以这样做:
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/index.aspx" defaultUrl="~/index.aspx"/>
</authentication>
</system.web>
在GNU awk(版本3.0.4和4.1.1)和mawk版本1.2
上测试要明确的是,$ awk -F '' '{print $2}' <<< "abc"
b
和-F
之间的空间 重要!