この質問に対する回答を試しましたが、特定の要件に合わせて調整することはできませんでした。
https://stackoverflow.com/questions/58005013/count-the-number-of-rows-per-column-in-bash-shell
私の目標は、csvファイルを読み取り、各列の数を返すbashスクリプトを作成することです。数は、ダッシュ、ピリオド、コロンなどの数値を含む行数です。
次のcsvファイルが提供されます。
2012-01-01 12:01:01, 1,3.2,NA,9,P
2012-01-01 12:01:01, 1,3,5,9,P
2012-01-01 12:01:01, 1,Bad,5,9,P
2012-01-01 12:01:01, 1,3,5,9,P
2012-01-01 12:01:01, 1,3,NA,9.7,P
私の結果は次のとおりです。
5,5,4,3,5,0
ベストアンサー1
使用awk
:
awk -F, -v OFS=, '
{ gsub(/[:. -]/, ""); for(c=1; c<=NF; c++) if($c==$c+0) count[c]++ }
END{ for(i=1; i<c; i++) printf "%d%s", count[i], (i+1<c?OFS:ORS) }' infnile
出力:
5,5,4,3,5,0