【发布时间】:2015-04-06 11:11:01
【问题描述】:
我有一个大的 csv 文件 (20 GB)。在文件中,我想用<br/> 替换所有出现的\r。我正在使用以下命令来实现这一点:
sed -i 's/\r/<br\/>/g' data.csv
perl -i.bak -pe 's/\r/<br\/>/g' data.csv
问题是这两个命令都失败了(结果文件为空)。有没有更好的方法来做到这一点?
【问题讨论】:
-
您的文件是否使用 Linux 行尾 (
'\r') 或其他?您是否尝试过编写\n而不是\r(C 标准说行尾会自动转换为\n,所以这可能会影响这些程序(我知道它会影响vim))?此外,“失败”和“结果文件为空”是非常不同的。 -
实际上该文件同时具有 \n 和 \r 。在一个较小的文件上,我首先将所有 \n 替换为
,但仍然发现了一些换行符。然后我替换了 \r 并且它起作用了。我无法对大文件执行类似的操作。是的,命令没有失败。结果是一个空文件 -
好的,那么该文件是来自 os x 还是 windows 之类的?您总是可以尝试 dos2unix 和类似的命令来修复行尾。尽管如此,未转义的反斜杠可能是一个问题,如下面的答案中所述。