取込ファイル側の不正レコードを効率よく調査したい。
bash バージョン
$ bash --version GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
ファイル内各レコードのフィールド数を集計
行ごとのフィールド数を数えて、その値ごとに件数を集計する。
(echo "count fields"; \
awk -F'\t' '{print NF}' file.tsv | sort | uniq -c | awk '{print $1, $2}' ) \
| column -t
指定フィールド数のレコード行を表示
フィールド数が 10 の行番号と内容を表示。
awk -F'\t' 'NF==10 {print NR, $0}' file.tsv
指定レコード行のフィールド数を表示
1234行目のフィールド数を出力。
sed -n '1234p' file.tsv | awk -F'\t' '{print NF " fields"}'
指定レコード行の不可視文字を表示
sed -n '1234p' file.tsv | od -An -c
sed -n '1234p' file.tsv | cat -A
フィールドごとに値を確認
1234行目を列番号付きで表示。
sed -n '1234p' file.tsv | awk -F'\t' '{for(i=1;i<=NF;i++){print i, $i}}'