我想读取分隔符为:
的文件中的列。
我这样试过(因为根据http://www.asciitable.com,冒号的八进制表示是072):
$ echo "a:b:c" | perl -a -072 -ne 'print "$F[1]\n";'
我希望它能够打印b
,但它不起作用。
答案 0 :(得分:13)
在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
答案 1 :(得分:5)
-0
指定记录(行)分隔符。这是因为Perl会收到三行:
>echo a:b:c | perl -072 -nE"say"
a:
b:
c
由于这些行中没有空格,如果要使用$F[1]
,-a
将为空。
-F
指定输入字段分隔符。这就是你想要的。
perl -F: -lanE'say $F[1];'
或者如果您遇到旧的Perl:
perl -F: -lane'print $F[1];'
命令行选项记录在perlrun。
中