列26の項目の長さが10でなければならない非常に大きなcsvファイルを解析しています。項目がない場合もあることがわかりますが(大丈夫です)、項目の長さが10未満または10より大きい場合もありますが、これは間違っています。私はナビゲートするためにこれらの行のいくつかを印刷したいと思います。
私の試みは次のとおりです
awk 'length($26) < 10' my_file.csv | sort -u | cut -d ',' -f 26 | head
しかし、これは私が望む結果を返しません。代わりに、列26の長さが実際には10などの一部の行を返します。私は何が間違っていましたか?
答え1
awk -F, 'length($26) != 10 { print }' /path/to/input > bad_field_length.txt
答え2
私は次のことを試してみます:
awk -F "," 'length($26) != 10 {print $26}' my_file.csv
その後、必要に応じて必要な他のフィルタ(ソートなど)を介してこの出力をパイプし続けることができます。
awkにコンマを使用して列を区切るように指示します。
-F ","
列26の長さが10と等しくない場合は、列26を印刷します。
'length($26) != 10 {print $26}'
答え3
cat FileName|awk -F ',' 'length($3)<=9 {print $3}'|sort -u
これは私にとって効果的です。 $ 3がレコードをフィルタリングした列である場合は、必要な列に置き換えることができます。このソートは、一意のレコードのみをソートするために使用されます。