次の表で表すことができるコンピューター シミュレーションによって生成された経時的なデータ セットがあります (「var」は変数です)。
time subject var1 var2 var3
t1 subjectA ...
t2 subjectB ...
と
subject name
subjectA nameA
subjectB nameB
ただし、生成されたファイルは、次のような形式でデータ ファイルを書き込みます。
time t1
description
subjectA nameA
var1 var2 var3
subjectB nameB
var1 var2 var3
time t2
description
subjectA nameA
var1 var2 var3
subjectB nameB
var1 var2 var3
...(and so on)
(python) スクリプトを使用してこの出力データをフラット テキスト ファイルに処理し、R、python、SQL、または awk/grep にインポートして情報を抽出できるようにしました。単一のクエリ (データがテーブルに変換された後の SQL 表記) を以下に示します。
SELECT var1, var2, var3 FROM datatable WHERE subject='subjectB'
これらのデータ ファイルはそれぞれ最大 100 MB になる可能性があり (私は何百ものファイルを持っています)、フラット テキスト ファイルの作成には時間がかかり、冗長な情報で追加のハード ドライブ領域を占有するため、より効率的なソリューションがあるのではないかと考えています。理想的には、余分なフラット テキスト ファイルを作成せずに、元のデータ セットを直接操作して、必要な情報を抽出することです...そのようなタスクのためのより簡単な awk/perl ソリューションはありますか? 私は Python でのテキスト処理にはかなり精通していますが、awk のスキルは初歩的で、perl の実用的な知識はありません。これらまたは他のドメイン固有のツールがより良いソリューションを提供できるかどうか疑問に思います。
ありがとう!
追記: うわー、みんなありがとう!みんなの答えを選べなくてごめんなさい @FM: ありがとう。私の Python スクリプトは、フィルター処理のステップを除いたコードに似ています。しかし、あなたの組織はクリーンです。@PP: 私はすでに grep に習熟していると思っていましたが、明らかにそうではありません! これは非常に役に立ちます...しかし、「時間」を出力に混在させると、greppingが難しくなると思います(私の例では、可能な抽出シナリオとして含めることができませんでした!それは私の悪いことです)。@ Ghostdog74: これは素晴らしいことです...しかし、「subjectA」を取得するために行を変更するのは簡単ではありませんでした. @weismat: よく言われます。@S.Lott:これは非常にエレガントで柔軟です-私はpython(ic)ソリューションを求めていませんでしたが、これは解析、フィルター、
繰り返しますが、私は皆さんに感謝しています - どうもありがとう。