我有一个表格的 CSV 文件,其中有一些空白条目。我希望我的代码查看每行的所有条目(第一行除外)并计算空白条目的数量>存储每行的空白条目并用逗号将它们分隔到名为 temp_file 的文件中>然后我希望代码计算该文件中空白条目的数量并给我一个值,例如,如果是,,,那么输出应该是 3。
这就是我目前所拥有的:
sed 1d ${FILENAME} | while read ln
do
echo $ln | tail -1 PMRExceptions.csv | tr "," "\n" | grep -nx '^$' | cut -d":" -f1
PMRNUM=echo $ln | awk -F"," '{print $2}'
PMRMGR=echo $ln | awk -F"," '{print $3}'
COUNT=less $TEMPFILE | wc -l
这部分应该计算空白条目的数量
while read line
do
columns=`head -1 $FILENAME | awk -F"," -v ln=$line '{print $ln}'`
无论我改变什么,我得到的值都是 0。我认为这些条目没有存储在临时文件中。
答案1
用于awk
计算每行输入中空的逗号分隔字段的数量(不包括标题行):
awk -F ',' 'NR > 1 { c=0; for (i = 1; i <= NF; ++i) if ($i == "") ++c; print c }' file.csv
这假设没有字段包含嵌入的逗号。
例子:
$ cat file.csv
A,B,C
1,,0
all,bar,none
my,field,here
no,data,
$ awk -F ',' 'NR > 1 { c=0; for (i = 1; i <= NF; ++i) if ($i == "") ++c; print c }' file.csv
1
0
0
1
有关的: