非常に大きなcsvファイルを解析しています。列26のエントリは長さ10である必要があります。エントリがない場合(これで問題ありません)の場合もありますが、エントリの長さがこれより短い場合もあります。 10または10を超えると、エラーになります。私は探検するためにこれらの行のいくつかを印刷しようとしています。
私の試みは:
awk 'length($26) < 10' my_file.csv | sort -u | cut -d ',' -f 26 | head
しかし、これは私が望む結果を返しません-代わりに、列26の長さが実際には10に等しいいくつかの行を返します。何が問題なのですか?
awk -F, 'length($26) != 10 { print }' /path/to/input > bad_field_length.txt
私は次のようなことを試します:
awk -F "," 'length($26) != 10 {print $26}' my_file.csv
その後、必要に応じて、この出力を他のフィルターにパイプして、ソートなどの必要な場合があります...
カンマを使用して列を区切るようにawkに指示します。
-F ","
列26の長さが10でない場合、列26を印刷します。
'length($26) != 10 {print $26}'
cat FileName|awk -F ',' 'length($3)<=9 {print $3}'|sort -u
これでうまくいきました。 $ 3は、レコードをフィルター処理した列ですが、選択した列に置き換えることができます。並べ替えは、一意のレコードのみを並べ替えるために使用されました。