2011-08-31 76 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