-1
我在OSX埃爾卡皮坦解析的Excel CSV文件,該CSV是herePerl的啜食在Excel csv文件
問題是換行被標記爲 '\ X0D'(CR)。
1]我已經能夠將文件設置爲「X0A」(NL)新行與
$> 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"; '
變換,但在此之前,我嘗試了其他兩路,他們失敗了,我想知道,如果由於失敗的原因,你有一些例證。
$> cat coord2.csv | perl -e 'undef $/; $t=<>; print "$t \n"; '
但在輸出我沒有看到所有的文件,我看到的只是:
2]我試過了一會兒啜所有文件一次
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]?
你的第三示例具有語法錯誤。報價被打破。在MacOS上以'\ r'結尾的字符是正常的。如果你在同一個mac上運行它,你可以使用'chomp',Perl會做正確的事情。但是,似乎你想要立即閱讀整個文件,那麼爲什麼要打擾行結束呢? – simbabque
[1]感謝您的語法修正,但結果是一樣的。 [2]關於行結束我不同意你,如果你運行'ls -1 | hexdump -C'你可以看到行結尾被編碼爲NL而不是CR。 [3]我在'print $ _'之前放置了chomp,現在它可以打印所有行!太棒了,現在我明白髮生了什麼事。謝謝。 –