2011-08-11 8 views
1

イムは、しかし、私はトラブルの値を取得する方法を把握しようとした、カールを経由してウェブサイトから取得したデータベースファイルを解析しようとしているBASH - 単線データベースファイルからの解析値(

これは一例です。ファイル

{"Databasename":[{"Var1":"Var1Value","Var2":"Var2Value","Var3":"Var3Value"},{"Var1b":"Var1bValue","Var2b":"Var2bValue","Var3b":"Var3bValue"}],"foldername":{"dbTblcountvar":"dbTblcountvalue","filecountsize":"filecountsizvalue"}} 

とVAR2は、どのように私は、その値を取得することができ、常に一定のですか?(Var2aValue、Var2bValue、Var2cValu読みやすく

{ 
"Databasename": 
[ 
    { 
    "Var1":"Var1aValue", 
    "Var2":"Var2aValue", 
    "Var3":"Var3aValue" 
    }, 
    { 
    "Var1":"Var1bValue", 
    "Var2":"Var2bValue", 
    "Var3":"Var3bValue" 
    }, 
    { 
    "Var1":"Var1cValue", 
    "Var2":"Var2cValue", 
    "Var3":"Var3cValue" 
    } 
], 
"foldername": 
    { 
    "dbTblcountvar":"dbTblcountvalue", 
    "filecountsize":"filecountsizvalue" 
} 
} 

asumingための改行とのe、Var2dValue、.....)

上記の例で取得しようとしている値は、ファイルをダウンロードして他の操作を実行するためにサーバーに返す必要のあるファイルのIDです。

おかげ

+1

あなたは、これはJSONのように見えることを考えると、bashシェルでのsedやawkのように、この使用したツールのようなものを解析することができますが、私はお勧めですより高いレベルの言語を使用してドキュメントを解析します。 Pythonには、Python 2.6以降のjsonモジュールが組み込まれています。 Perlは別のオプションであり、CPANにいくつかのjsonモジュールを持っています。 – arunkumar

+0

ありがとうございましたJSONであることを知っていませんでしたが、単にbashをjsonで検索した後、私はこの猫を見つけましたfsfileman.txt | sed -eの/ [{}]/''/g '| awk -v k = "text" '{n = split($ 0、a、 "、"); for(i = 1; i <= n; i ++)print a [i]} '| grep '"Var2":' | sedの/://1 '| awk -F "" '{print $ 2}' それは私に必要な値を与えます – Kr0nZ

答えて

2
cat DownloadedFile.Ext | perl -pe 's/"Var2[abc]?":"(.+?)(?<![\\])"/\n\1\n/g' | grep -vPe '(?<!\\)"' 

これらのコマンドは、最初に、そしてそれがJSONファイルである」。 は、私が思う持っているすべての行をフィルタリングする新しい行に(オプション、B、Cの後で)VAR2を置きますので、私は正規表現のこの部分を「エスケープのマッチングを避ける:

(?<!\\) 
関連する問題