2016-10-05 3 views
-1

私は手で検査することができない非常に大きなCSVファイルを持っています。また、それほど少数の列(例えば、100)もありません。それは列のいくつかの組み合わせでソートされているようですが、手作業でソート順序を決定するのは難しいです。(大)CSVの並べ替え順序を確認するにはどうすればよいですか?

これを行うのに役立つツールがありますか?

これは、標準のUNIXシェルユーティリティを使用して簡単に実行できる場合のボーナスポイントです。

答えて

1

-cスイッチでsortユーティリティを使用し、各フィールドを確認できます。 「非常に大きい」大きさに応じて、各列ごとに1回行う必要があるため、時間がかかることがあります。ファイルが特定のフィールドでソートされていない場合、コマンドはかなり速く終了するはずです。例えば

sort --check -field-separator=',' --key=1 
sort --check -field-separator=',' --key=2 

あなたはすべてのフィールドのためにそれを行うために一緒にbashスクリプトを入れて、それぞれ1つがステータスを報告することができるはずです。

ファイルが複数のフィールドでソートされていると思われる場合は、上記を使用して主キーを検出し、その後の手順を繰り返して後続のキーを見つける必要があります。あなたはフィールドタイプをいじるが必要になる場合があります

sort --check --field-separator=',' --key=5,1 
sort --check --field-separator=',' --key=5,2 
... etc 

注:上記はフィールド5が主キーであることが明らかになった場合たとえば、あなたは二次キーを使用してテストを開始します。たとえば、数値フィールドは、タイプを指定しない限り、テキストとしてソートされる(「10」は「2」の前に来る)。リンクされたマニュアルページのKEYDEFの説明を参照してください。

+0

まあ、ソート順の最初のフィールドだけがソートされ、他のフィールドは以前のキー要素のすべての組み合わせに対してソートされます。 – einpoklum

+0

@einpoklum:複数のフィールドでソートされていると思われる場合は、上記のキーを使用して主キーを検出し、その後のキーを検索する手順を繰り返します。たとえば、5がプライマリキーである場合、 'sort --check --key = 5,1' –

+0

あなたの答えに入れたら、私はそれを受け入れます。 – einpoklum

関連する問題