2011-08-31 10 views

答えて

13

ルック:

% 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は(記録を指定:値がこのようにいくつかの区切り文字は、いくつかの余分なエスケープが必要になる場合があり、正規表現として解釈されていることを

% echo "a:b:c" | perl -a -F: -ne 'print "$F[1]\n";' 
b 

は注意ライン)セパレータ。これらの行のいずれにも空白がありませんので-aが使用された場合、$F[1]は空になり

>echo a:b:c | perl -072 -nE"say" 
a: 
b: 
c 

:これは3本のラインを受け取るためにPerlの原因でした。

-Fは、入力のフィールドを指定します。これはあなたが望むものです。

perl -F: -lanE'say $F[1];' 

それともが古いPerlで立ち往生している場合:

perl -F: -lane'print $F[1];' 

コマンドラインオプションは、perlrunに記載されています。

関連する問題