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}'`

무엇을 변경하더라도 내가 얻는 값은 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

관련된:

관련 정보