2016-09-16 5 views
1

20,000件を超えるデータを解析しようとしました。各レコードには4つのフィールドがあり、先頭に2つの英数字の値があります。以下は2レコードの例です。私は現在、ここのリンクに基づいてJavaを使用する膨大なソリューションを持っています:Parsing HTML Data using Java (DOM parse)。しかし、私はその解決方法を使用することを検討していません、レコードを分離するだけの過剰な作業です。 VBS、Python、または私がすでに使ったロジックに基づいてフィールドを分けることができる他の言語を使用するソリューションはありますか?または別の論理的なアプローチですか?テキストフィールドをExcelの列に解析する

 100000000   SMP008483 
    |--- Category    Western 
    |--- Model     Ford 
    |--- Asset Delivered Date ? 
    |--- Scheduled    ? 

    100000001   SMP008484 
    |--- Category    Eastern 
    |--- Model     Chevrolet 
    |--- Asset Delivered Date ? 
    |--- Scheduled    ? 

の予想される出力はここにある:

ID1   ID2   Category Model  Asset Delivered Date Scheduled       
100000000  SMP008483 Western  Ford    ?     ? 
100000001  SMP008484 Eastern  Chevrolet   ?     ? 
+0

別のフォーマットを使用している場合は、必要な階層を提供するJSONをお勧めします。多くの言語で簡単に読むことができます。ファイルを開き、各行を繰り返し、 'text.split()'や 'test.partition()'のような文字列ルーチンを使って辞書の配列を構築することで、これを解析するPythonコードはそれほどありません。 – Kenny

+0

このデータはどこですか?それはプレーンテキストとして表示するのとまったく同じですか? –

+0

@TimWilliams(スペースに基づいて)元の質問のデータを更新した後、データは正確に表示されます。データはTXTファイルからのものです。 – stitch70

答えて

0

この1つはちょっと安っぽいですが、それは動作します。ここにあなたが行く:あなたが行う場合、それが破損しますので

#!/bin/bash 
i=0 
while IFS= read -r line;do 
echo $line | egrep -q '^[0-9]+' 
if test $? -eq 0; then 
    id1=$(echo $line | cut -d' ' -f1) 
    id2=$(echo $line | cut -d' ' -f2) 
    ((i++)) 
fi 
echo $line | egrep -q 'Category' 
if test $? -eq 0; then 
    cat=$(echo $line | sed -e 's/^.*Category//') 
    ((i++)) 
fi 
echo $line | egrep -q 'Model' 
if test $? -eq 0; then 
    model=$(echo $line | sed -e 's/^.*Model//') 
    ((i++)) 
fi 
echo $line | egrep -q 'Asset Delivered Date' 
if test $? -eq 0; then 
    date=$(echo $line | sed -e 's/^.*Asset Delivered Date//') 
    ((i++)) 
fi 
echo $line | egrep -q 'Scheduled' 
if test $? -eq 0; then 
    sch=$(echo $line | sed -e 's/^.*Scheduled//') 
    ((i++)) 
fi 
if test $i -eq 5; then 
    echo -e "${id1}\t${id2}\t${cat}\t${model}\t${date}\t${sch}" 
    i=0 
fi 
done <<< "$(cat ${1})" 

*、すべてのフィールドを追加するのを忘れないでください。

+0

フィールドごとに複数の単語を使用できるように編集することは可能ですか? – stitch70

+0

ええ、それはsedのような "多目的"なもので 'cut'コマンドを変更することで簡単に編集できます。今日は後でそれをやります。 – thePiGrepper

+0

が完了しました。それでも検証はほとんどなくても簡単なスクリプトですが、入力があれば動作します。 – thePiGrepper

関連する問題