我想读取分隔符为:
的文件中的列。perl -a:如何更改列分隔符?
我试了一下这样的(因为根据http://www.asciitable.com,结肠的八进制表示为072):
$ echo "a:b:c" | perl -a -072 -ne 'print "$F[1]\n";'
我希望它打印b
,但它不工作。在perlrun
我想读取分隔符为:
的文件中的列。perl -a:如何更改列分隔符?
我试了一下这样的(因为根据http://www.asciitable.com,结肠的八进制表示为072):
$ echo "a:b:c" | perl -a -072 -ne 'print "$F[1]\n";'
我希望它打印b
,但它不工作。在perlrun
看-F
:
% echo "a:b:c" | perl -a -F: -ne 'print "$F[1]\n";'
b
注意,值取正则表达式,所以一些分隔符可能需要一些额外的转义:
% echo "a.b.c" | perl -a -F. -ne 'print "$F[1]\n";'
% echo "a.b.c" | perl -a -F\\. -ne 'print "$F[1]\n";'
b
-0
指定记录(线)分离器。这是原因的Perl收到三条线:
>echo a:b:c | perl -072 -nE"say"
a:
b:
c
因为有任何的线条没有空格,如果-a
将被用于$F[1]
将是空的。
-F
指定输入字段分隔符。这是你想要的。
perl -F: -lanE'say $F[1];'
或者,如果你坚持使用旧的Perl:
perl -F: -lane'print $F[1];'
命令行选项都记录在perlrun。
很酷,谢谢!我想知道'-0'是什么,然后...... – Frank
'-0'设置*记录分隔符*(Perl将下一行分开的概念) – mob
它是记录分隔符,而不是字段分隔符。 – tripleee