Excelのcsvファイル内のPerl SLURPは、CSVはhere私はOSXエルキャピタンでExcel CSVファイルを解析しています
問題は改行が '\ x0d'(CR)としてマークされているです。
1]私は
$> perl -e 'open(fh, "<coord2.csv") or die("can t open file");
binmode(fh); $/=\10;
while ($t=<fh>) { $t =~ s/\x0d/\x0a/g; print "$t"; } print "\n"; '
で「X0A」(NL)として設定改行でファイルを変換することができましたが、その前に、私は2つの他の方法を試してみましたが、彼らは失敗した、私はかどうかを知りたいです彼らが失敗する理由のためにいくつかのexmplanationを持っています。
2]私は一度にすべてのファイルを読まためにしばらくの間しようとした:
$> cat coord2.csv | perl -e 'undef $/; $t=<>; print "$t \n"; '
が、出力では、私はすべてのファイルが表示されない、私だけを参照してください。
Prelevacampioni ZARA;45.0640, 11.1943;F ;F 9.954467;F00;F599242;F
3]私は、$/
変数を設定することも試みた:
$> cat coord2.csv | perl -e '$/="\x0d"; @L=<>;
for (@L) { print $_; } print "\n"; '
が、再び、私は同様に、同じ出力を参照しますポイント[2]。
私は困惑しています。あなたが私が何を間違っているのかを[2]と[3]で説明することはできますか?
あなたの第3の例は、構文エラーを有しています。引用符は壊れています。 '\ r'を行末文字として使うのはMacOSでは普通です。同じmacでこれを実行すると、ちょうど 'chomp'を使うことができ、Perlは正しいことをします。しかし、一度にファイル全体を読んでみたいので、とにかく行末を気にするのはなぜですか? – simbabque
[1]構文訂正ありがとうございますが、結果は後で同じです。 [2]行末について 'ls -1 |を実行すると、私はあなたに同意しません。 hexdump -C'で行末がCRではなくNLとしてエンコードされていることがわかります。 [3] 'print $ _'の前にchompを入れて、今はすべての行を印刷します!今、私は何が起こったのか理解しました。ありがとうございました。 –