无法替换流编辑中的特定字符

无法替换流编辑中的特定字符

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 部分。

相关内容