csvの空行・コメント行・コメント部分を除外したフィールド数をカウントする
csvファイル(sample.csv)から1行ずつ読み込み、そのフィールド数を標準出力する。
- 行頭の直後が行末である行は空行とする。
- (半角スペースまたはタブ文字)のみで構成された行は空行とする。
- 行頭が「#」の行はコメント行とする。
- 行頭から、最初に出現する「#」直前までの部分文字列が、半角スペースまたはタブ文字のみで構成される場合、その行をコメント行とする。
- (空行またはコメント行)以外の行を有効行とする。
- 有効行に「#」が含まれる場合、行頭から最初に出現する「#」の直前までを当該行の有効文字列とする。
- 有効行に「#」が含まれない場合、当該行全体を有効文字列とする。
- 有効行について、有効文字列をカンマ区切りした場合のフィールド数を標準出力する。
#!/bin/bash for COLNUM in `awk -F"," '/^([ \t]*$|[ \t]*#|$)/ {next} {sub("#.*", "")}{print NF}' ./sample.csv` do echo $COLNUM done