2011-08-31 77 views

回答

13

-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

很酷,谢谢!我想知道'-0'是什么,然后...... – Frank

+1

'-0'设置*记录分隔符*(Perl将下一行分开的概念) – mob

+1

它是记录分隔符,而不是字段分隔符。 – tripleee

5

-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