我有一个棘手的CSV,应该用bash编辑。 这里CSV中的典型行如何
A; B; C; D; E
1234567; 7654321; 100,00; ABC; 0,00
我的目标是将十进制(C列)乘以一个因子(例如0,01)并在B列中加上一个前缀。所以CSV将会像这样看起来:
A; B; C; D; E
1234567; ABC-7654321; 105,00; ABC; 0,00
答案 0 :(得分:2)
使用awk
awk -F\; '{$2="abc-"$2;$3*=0.01}1' OFS=\; file
1234567;abc-7654321;1;ABC;0,00
100,00*0,01=1
而非105,00
答案 1 :(得分:1)
export factor=0.01
prefix=abc-
IFS=';' while read a b c d e; do
echo $a;$prefix$b;$(echo "$(echo $c|tr ',' '.')*$factor" | bc | tr '.' ',');$d;$e
done < inputfile > outputfile
答案 2 :(得分:0)
非常感谢所有贡献者,最后我可以将它们全部放在一起跟随bash代码:
#!/bin/bash
##############################
factor='1.1'
sourcefile=whatever.txt
inputfile=whatever.csv
outputfile=import.csv
##############################
cp $sourcefile $inputfile;
sed -i -e 's/,/./g' $inputfile
awk -F ";" '{
if ($1 =="Cust_id")
print "a;b";
else
print "abc-" $2 ";" $3*f;
}' f="$factor" $inputfile > $outputfile
echo 0
输出看起来像那样,也许有人可以告诉我如何把它变成x.2十进制格式?
a;b
abc-1000317;6.556