我有一個很大的csv文件(20 GB)。在該文件中,我想用<br/>
替換\r
的所有匹配項。我使用下面的命令來實現這一目標:替換一個20 GB的csv文件中的字符串
sed -i 's/\r/<br\/>/g' data.csv
perl -i.bak -pe 's/\r/<br\/>/g' data.csv
的問題是,這兩個命令都沒有(得到的文件是空的)。有沒有更好的方法來做到這一點?
我有一個很大的csv文件(20 GB)。在該文件中,我想用<br/>
替換\r
的所有匹配項。我使用下面的命令來實現這一目標:替換一個20 GB的csv文件中的字符串
sed -i 's/\r/<br\/>/g' data.csv
perl -i.bak -pe 's/\r/<br\/>/g' data.csv
的問題是,這兩個命令都沒有(得到的文件是空的)。有沒有更好的方法來做到這一點?
只需將您的sed
命令替換爲該命令,我只是在源字符串中添加了\
,它將使\
成爲正常字符。
sed -i 's/\\r/<br\/>/g' data.csv
也有另一種方式來做到這一點,
tr '\r' '_' data.csv
sed -i 's/_/<br\/>/g' data.csv
但我想\ r被視爲回車。相同的命令適用於較小的文件。我不確定,這將如何改變輸出? – user2730428 2015-02-06 10:39:50
我試過我自己的文件,這裏回答了這個問題,@ user2730428你還沒有試過我的回答? – Skynet 2015-02-06 10:42:21
我試過了,我再次得到了空文件:( – user2730428 2015-02-06 10:51:31
正在使用您的文件的Linux行結束符(''\ r'')或其他?你有沒有嘗試寫'\ n'而不是'\ r'(C標準說行結尾會自動轉換爲'\ n',這樣可能會影響這些程序(我知道它會執行vim))?另外,「失敗」和「生成的文件是空的」是非常不同的。 – Shahbaz 2015-02-06 10:30:43
實際上該文件同時包含\ n和\ r。在一個較小的文件中,我首先用
替換了所有的\ n,並且仍然找到了一些新的行字符。然後我將其替換\ r並且它工作。我無法在大文件上執行類似的操作。 是的命令沒有失敗。它導致一個空文件 – user2730428 2015-02-06 10:38:17
好的,這個文件是從os x還是windows發過來的?你總是可以嘗試dos2unix和類似的命令來修復行結束。儘管如此,如下面的答案中所提到的,非反轉的反斜槓可能是一個問題。 – Shahbaz 2015-02-06 10:40:35