awkを使用してフラットファイルから誤ったレコードを抽出する

awkを使用してフラットファイルから誤ったレコードを抽出する

指定された列よりも多くの列を含むファイルから行を抽出するスクリプトが必要ですかawk

答え1

$ awk 'NF > 10 { print NR }' data.in

これにより、行番号が印刷されます(実際には記録ただし、デフォルトでは行は1つのレコードなので違いはありません。)各行には10個以上のフィールドが含まれています。デフォルトでは、フィールドはスペースで区切られた文字列です。別の区切り文字がある場合-F-F ','カンマの代わりに)を使用します。

$ awk -F ',' 'NF > 10 { print NR }' data.in

行番号の代わりに行を表示する方が簡単です。

$ awk 'NF > 10' data.in

答え2

質問が「最大」列数よりも多くのファイルから行を印刷する方法である場合は、次のいずれかの方法に従ってください。

awk -v max=9 'NF > max' your-file-here

指定したい最大値(ここでは9)を渡します。

答え3

抽出が削除を意味する場合に使用できます。awk

$ awk 'NF < 10' my-file.in > my-file.out

崩れる

NF現在処理中の行にフィールド数を表示するawk変数。

< 10NF が 10 未満の場合、ラインを印刷します。

my-file.in入力ファイル。

> my-file.out出力を新しいファイルにリダイレクトします。

awkについてもっと詳しく知りたい場合は、awkが組み込まれており、組み込みのawk変数のレイアウトが非常に優れていると思います。ここ

関連情報