perl中字段分隔符的变量

gle*_*man 9 perl awk

在awk中我可以写: awk -F: 'BEGIN {OFS = FS} ...'

在Perl中,相当于FS什么?我想写

perl -F: -lane 'BEGIN {$, = [what?]} ...'
Run Code Online (Sandbox Code Playgroud)

用一个例子更新:

echo a:b:c:d | awk -F: 'BEGIN {OFS = FS} {$2 = 42; print}'
echo a:b:c:d | perl -F: -ane 'BEGIN {$, = ":"} $F[1] = 42; print @F'
Run Code Online (Sandbox Code Playgroud)

两个输出 a:42:c:d

我宁愿不在:Perl BEGIN块中进行硬编码,也可以参考-F选项保存其参数的位置.

gle*_*man 6

总而言之,我所寻找的东西并不存在:

  1. 没有变量支持论证-F,更重要的是
  2. Perl的"FS"基本上是与"OFS"(字符串)不同的数据类型(正则表达式) - 使用正则表达式连接字符串列表没有意义.

请注意,在awk中也是如此:FS是一个字符串,但作为正则表达式:

echo a:b,c:d | awk -F'[:,]' 'BEGIN {OFS=FS} {$2=42; print}'
Run Code Online (Sandbox Code Playgroud)

输出" a[:,]42[:,]c[:,]d"

感谢您的洞察力和解决方法.