CSVファイルから目的のアイテムを新しいファイルに出力してアイテム数を数えるにはどうすればよいですか?

CSVファイルから目的のアイテムを新しいファイルに出力してアイテム数を数えるにはどうすればよいですか?

一部の空のエントリを含むテーブルの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}'`

何を変更しても、私が得る値はゼロです。アイテムが一時ファイルに保存されていないと思います。

ベストアンサー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

関連:

おすすめ記事