やりたいこと
以下のようなCSVファイル(abc.csv)がありそれぞれの行の特定文字列(カンマ数)をカウントしたい。
a,b,c
d,e
f,g,h,i
j,k,
つまり上の場合は以下のように出力したい。
2 1 3 2
環境情報
$ bash --version GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu)
やり方
#!/bin/bash while read line do echo $line | awk 'BEGIN{FS=","} {n+=NF} END{print n-1}' done < ./abc.csv
以下、補足です。
補足
単語数をカウントする以下のワンライナーを利用しています。区切られたレコードの数が入っていますNF
をカウントします。
$ awk '{n+=NF} END{print n}'
今回は指定の単語が「,」なので以下のように区切って
BEGIN{FS=","}
レコード数ではなく区切り文字の数なので
END{print n-1}
マイナス1しています。
以上、同様のことをしたい方の参考になれば幸いです。