【发布时间】:2020-02-01 15:00:21
【问题描述】:
我有一个 .csv 文件,需要按以下方式修改:对于文件中的每一列,检查该列是否包含任何空条目。如果是这样,它将从文件中删除。否则,该列将保留。我尝试使用以下脚本解决此问题:
cp file-original.csv file-tmp.csv
for (( i=1;i<=65;i++)); do
for var in $(cut -d, -f$i file-tmp.csv); do
if [ -n $var ]; then
continue
else
cut -d, --complement -f$i file-tmp.csv > file-tmp.csv
break
fi
done
done
我假设问题在于将每次迭代的结果保存到一个也正在迭代的文件中 (file-tmp.csv)。但是,我不确定如何规避这一点。
【问题讨论】:
-
你必须使用一个临时文件,例如here。我将添加一个替代您的方法的答案,该方法首先避免复制。
-
见Bash FAQ 001。但是,对于允许引用字段的 CSV 文件,您应该使用具有适当 CSV 解析库的通用语言。
标签: bash