是否可以从shell脚本格式化csv,以便将所有列设置为适合?
这就是我所拥有的,只是不确定还有什么可以改变:
#! /bin/bash
saveDir="TJ"
dd=$(date -v -1d '+%Y-%m-%d')
for file in *.csv ; do
saveName="${saveDir}/TJ - ${dd}.csv"
cut -d',' -f2,14 "$file" > "$saveName"
done
此外,在切割色谱柱并仅留下第2和第14列后,我还有3个额外的空白列...如何摆脱这些?
示例文件:http://d.pr/3a5Z
这就是我想要CSV的方式,显示两列中的所有文字并删除额外的列:http://d.pr/S1mz
编辑:
#! /bin/bash
saveDir="TJ"
dd=$(date -v -1d '+%Y-%m-%d')
for file in *.csv ; do
saveName="${saveDir}/TJ - ${dd}.csv"
awk '{x="";for(i=2;i<=14;i++){if(length(x))x=x",";x=x$i;}print x;}' yourfile
done
答案 0 :(得分:1)
一种解决方案是使用sed
删除三个尾随逗号
输入:
$ cat TJ\ -\ 2014-01-03.csv
name,number,,,
test,1.00000,,,
...
输出:
$ sed 's/,,,//' TJ\ -\ 2014-01-03.csv
name,number
test,1.00000
test,2.00000
test,3.00000
...
答案 1 :(得分:1)
严重编辑
试试这个:
#!/bin/bash
saveDir="TJ"
dd=$(date -v -1d '+%Y-%m-%d')
for file in *.csv ; do
saveName="${saveDir}/TJ - ${dd}.csv"
awk '{x="";for(i=2;i<=14;i++){if(length(x))x=x",";x=x$i;}print x;}' $file > "$saveName"
done