2015-04-19 71 views
-1

我在每行記錄中有一個以CRLF結尾的csv文件。使用Perl,如何僅在文件的最終記錄中刪除CRLF,以便在文件末尾沒有空記錄行?謝謝。使用Perl刪除csv文件的CRLF結尾

+0

我說你需要添加關於你的問題的更多細節。 csv *中的每行都應該以換行符結尾,無論是CRLF(窗口)還是僅LF(unix)。您不應該從文件的最後一行刪除該文件,以防止文件末尾出現空記錄行。 – lecstor

+1

考慮使用現有的CSV解析器之一,而不是像[Text :: CSV](https://metacpan.org/pod/Text::CSV)或[Text :: CSV_XS](https://metacpan.org/pod /文:: CSV_XS)。他們可能會比自己做更快,更少的錯誤。 – Schwern

回答

0

如果我正確地遵循這個問題,那麼在最後一條記錄後面會有一個換行符,它在文件的末尾創建一個空行。

您可以將文件讀入標量並使用替換刪除尾隨空行。 \ r將在新的Perl版本(5.10,我認爲)工作,並會匹配任何系統的斷行,否則你會需要使用\ n或\ n \ r

open $fh, '<', 'test.csv'; 

while (<$fh>) { 
    $str .= $_; 
} 

$str =~ s/\R+(.*)\R+/$1/s;