在unix中更改csv文件分隔符

Dil*_*eep 2 unix linux shell sed

我有许多带制表符分隔的.csv文件,现在我想更改分隔符.当我使用下面的脚本时,它不会更改文件.所以请帮我写脚本.

file_mask=$1
from_delim=$2
to_delim=$3
for i in `ls $file_mask*`
do
sed -i 's|$from_delim|$to_delim|g' $i
done
Run Code Online (Sandbox Code Playgroud)

Ann*_*sum 13

不要使用sed或tr为此使用csvtool(可从公共存储库中获得)。如果您在字符串中有 TAB,上述简单的工具就会卡住。您将需要使用awk来开始计算报价等。这些基本工具会弄得一团糟。

用包含所有极端情况的 csvtool 用例如分号替换 TAB 很简单:

csvtool -t TAB -u ';' cat $ifile -o $ofile

带有$ifile输入文件和$ofile输出文件。


dev*_*ull 6

你可以使用tr:

tr '\t' ',' < inputfile > outfile
Run Code Online (Sandbox Code Playgroud)

(假设这,是新的分隔符)


小智 5

我建议使用 csvkit:https://csvkit.readthedocs.io/en/latest/。使用包中附带的csvformat,您可以安全地更改分隔符。

csvformat -D '[your delimiter here]' [file name]
Run Code Online (Sandbox Code Playgroud)