0

数列と数百万行 (2010-12-15 として書式設定された日付列を含む) を含む 2 GB の CSV ファイルがあります。この CSV を、日付ごとにフォルダーに配置された小さな CSV に分割しようとしています (たとえば、2010 年 12 月 15 日のすべてのエントリは 20101215 という名前のフォルダー内にあります)。

私はこれにかなり慣れていませんが、分割コマンドを認識しています。正しい方向に私を向けることができますか?

前もって感謝します!

4

1 に答える 1

0

データの規則性とクリーン度に応じて、次のようなもので十分な場合があります。

for i in `cut -d, -f 2  <csv | sort -u`; do
   mkdir $i && grep $i csv > $i/csv
done

csv(データがファイルにあり、日付情報が2番目の列にあると仮定します)

これは何をしているのですか?2 番目の列のcut日付が除外され、それらが実行さsort -uれて、一意の日付の並べ替えられたリストが作成されます。次に、これ (forコマンド) を繰り返し処理し、エントリごとmkdirに対応するディレクトリを取得します。grep の結果は、そのディレクトリ内の csv ファイルになります。

それは理想的ではありません。たとえば、各日付の入力ファイルを grep します。私は、データが規則的であり、日付文字列 (たとえば 2012-08-06) がデータの他の場所に表示されていない (または、上記のスクリプトを台無しにする文字 (スペースや など) を含んでいない) と想定しています/

splitここでコマンドが役立つとは思いません。ファイルを通常のチャンクに (サイズまたは行数で) 分割する場合に便利です。

于 2012-08-06T15:15:34.493 に答える