[英]How to specify column separator for `perl -a`?
我试图读取一个文本文件(使用perl),其中每行都有几条记录,如下所示:
r1c1 & r1c2 & r1c3 \\
r2c1 & r2c2 & r2c3 \\
因此, &
是记录分隔符。
Perl帮助说:
$ perl -h
-0[octal] specify record separator (\0, if no argument)
为什么要使用八进制数超出了我的范围。 但是046
是分隔符&
的八进制ASCII,因此我尝试了以下操作:
perl -046 -ane 'print join ",", @F; print "\n"' file.txt
所需的输出将在哪里
r1c1,r1c2,r1c3 \\
r2c1,r2c2,r2c3 \\
但这是行不通的。 您如何正确执行?
我认为您正在混合两种不同的东西。 -0影响的记录分隔符是将输入划分为“行”的原因。 -a
使得每个“行”然后在@F
默认分割为@F
。 要更改-a
分割的内容,请使用-F
开关,如-F'&'
。
如果对perl命令行选项有疑问,请在命令行中查看perldoc perlrun
。
另外,如果您使用-l选项perl -F'&' -lane ...
它将在将每行的行尾(EOL)字符传递给脚本之前删除,并将其添加到每个打印件中,因此您无需在代码中添加“ \\ n”。 一个衬里的字符越少越好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.