awk + ​​csvでフィールド区切り文字を計算し、行番号を印刷します。

awk + ​​csvでフィールド区切り文字を計算し、行番号を印刷します。

50000を超える行を含むcsvファイルがあります。これは単なる例です。

Dcccrev,wefrwvfr,rfregt,wr4f,rfvrv,ecxwec,ecfrv,rfrf
Grge,gtgr,frfrv,gthtgv,gerg5tgvrt,rvrfvtg,tgt,frfrf,rfrf
Drfrfr,t,tgtg,rf,rgr,grtg,tgt,gtgtg,rg
.
.
.

私の仕事は次のとおりです。各行の区切り文字「、」の数が7以外の場合は、行番号を印刷する必要があります。

これを行うためにawkラインまたはperlラインを生成することは可能ですか?

echoやcatを使って時間を費やす必要はありません。

ベストアンサー1

awkを使うととても簡単です。区切り文字を設定してから、-F','NFを使用して列数を計算できます。 7つのカンマには8つのフィールドが必要で、NRを使用して現在の行番号を印刷します。

awk -F ',' 'NF != 8 {print NR}' test.txt

test.txtの内容

Dcccrev,wefrwvfr,rfregt,wr4f,rfvrv,ecxwec,ecfrv,rfrf
Grge,gtgr,frfrv,gthtgv,gerg5tgvrt,rvrfvtg,tgt,frfrf,rfrf
Drfrfr,t,tgtg,rf,rgr,grtg,tgt,gtgtg,rg

出力

2
3

おすすめ記事