目的の形式と一致しないcsvファイルの行を削除する

目的の形式と一致しないcsvファイルの行を削除する

次のように自動生成されたCSVファイルがたくさんあります。

1603145914502,48.12,0.085,s
1603145914815,48.12,0.020,s
1603145914941,48.12,0.019,s
1603145915404,48.12,0.031,s
1603145915612,48.12,0.033,s
1603145915899,48.12,0.019,s

整数、2つの浮動小数点数と文字。

ビルド中のスレッドの問題により、一部のファイルが破損しています。

1603145914502,48.12,0.085,s
1603145914815,48.12,0.020,s
1603145914941,48.12,0.019,s
1603145915404,48.12,0.031,s
1603145915612,48.12,0.033,s
1603145915899,48.12,0.019,s
1603145914502,48.12,0.085,s915899,48.12,0.019,s
1603145914815,48.12,0.020,s
1603145914941,48.12,0.019,s
1603145915404,48.12,0.031,s
1603145915612,48.12,0.033,s
1603145915899,48.12,0.019,s
1459143
1603145914815,48.12,0.020,s
1603145914941,48.12,0.019,s
1603145915404,48.12,0.031,s

形式に合わない行を見つけて削除する方法はありますか? awkはうまくいくようですが、どのように使用するのかわかりません:)

これを行う方法がある場合は、コマンドから何かを学ぶことができるようにコマンドも説明できれば本当に感謝します。


編集:形式を明確にしています。

整数、浮動小数点、浮動小数点、文字

カンマの後にスペースを入れてはいけません。値は、上記の形式に準拠する任意の値にすることができます。

ベストアンサー1

次の単純/基本形式(符号なし、指数なし)と一致するために必要なのは、これらのうちの1つだけですINT,FLOAT,FLOAT,CHAR

grep -E '^[0-9]+,([0-9]+\.[0-9]+,){2}[[:alpha:]]$' file

sed -En '/^[0-9]+,([0-9]+\.[0-9]+,){2}[[:alpha:]]$/p' file

awk '/^[0-9]+,([0-9]+\.[0-9]+,){2}[[:alpha:]]$/' file

おすすめ記事