sed 是一款非常棒的工具,但出于某种原因,这次我无法让它满足我的需要。我正在处理 csv 中的大量数据集。有些文件以 ;(分号)分隔,而其他文件以 ,(逗号)分隔
这应该可行吧?
find . -type f -name '*.txt' -print0 | xargs -0 sed -i'' -e '/s/;/,'
但事实并非如此。所以我想,哦,让我们逃离他们吧。
find . -type f -name '*.txt' -print0 | xargs -0 sed -i'' -e '/s/\;/\,'
那里也没有运气。
甚至在所有情况下都尝试了 ' vs "。如果不编写 python 脚本并逐行处理,我该怎么做呢?有 5 亿行,所以真的不想采用 RBAR 方式。
答案1
sed 似乎无法做到这一点,并且不支持在开头或单独使用特殊字符。替代方案如下。
cat source.txt | tr ';' ',' > newsource.txt
它速度非常快。速度没有问题。处理大数据时,你可能只需要一些额外的空间。我的好主意是在处理大数据时将文件分成 2gb 部分。