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输出文件。
小智 5
我建议使用 csvkit:https://csvkit.readthedocs.io/en/latest/。使用包中附带的csvformat,您可以安全地更改分隔符。
csvformat -D '[your delimiter here]' [file name]
Run Code Online (Sandbox Code Playgroud)