2016-04-26 16 views
3

私は構成ファイルを作成する作業があります。設定ファイルはJSONファイルです。単語を検索してファイルからの単語で置き換えます

"text": { 
     "data": "Click Here", 
     "size": 36, 
     "style": "bold", 
     "name": "text1", 
     "hOffset": 250, 
     "vOffset": 100, 
     "alignment": "center", 
     "onMouseUp": "sun1.opacity = (sun1.opacity/100) * 90;" 
    } 

の構成以下の実施例は、JSONの「スタイル」属性の変更で繰り返されます。だから私は上記のテキストを50回言うとコピーします。次に、「スタイル」属性を、別のコンマ区切りファイルから入力された異なるスタイルで置き換えて、下に示すようにしたいと思います。

bold,italic,cryptic 

出力は

"text": { 
      "data": "Click Here", 
      "size": 36, 
      "style": "bold", 
      "name": "text1", 
      "hOffset": 250, 
      "vOffset": 100, 
      "alignment": "center", 
      "onMouseUp": "sun1.opacity = (sun1.opacity/100) * 90;" 
     } 
"text": { 
      "data": "Click Here", 
      "size": 36, 
      "style": "italic", 
      "name": "text1", 
      "hOffset": 250, 
      "vOffset": 100, 
      "alignment": "center", 
      "onMouseUp": "sun1.opacity = (sun1.opacity/100) * 90;" 
     } 
"text": { 
      "data": "Click Here", 
      "size": 36, 
      "style": "cryptic", 
      "name": "text1", 
      "hOffset": 250, 
      "vOffset": 100, 
      "alignment": "center", 
      "onMouseUp": "sun1.opacity = (sun1.opacity/100) * 90;" 
     } 

これを行う簡単な方法はありますでしょうか?

答えて

4

gensubのためのGNU AWKを使って別の解決策は:

awk -v RS= ' 
    NR==FNR { n = split($0, styles, /,/); next } 
    { 
    for (i=1; i<=n; i++) { 
     style = "\"" styles[i] "\"" 
     print gensub (/(["]style["]:).[^,]+/, "\\1" style, "G", $0); 
    } 
    } 
' style.txt config.file 

あなたがしたいスタイルの区切られた値をコンマたファイルと呼ばれるstyle.txtで始めます。それらを配列に格納します。設定ファイルを繰り返し処理し、スタイル・セグメントをスワップして新しいパターンに置き換えます。

JSONは、Perl、Ruby、Pythonのいずれかを使用してJSONパーサーで解析した方が良いとは思っていませんが、設定ファイルを何も制御していないため、

0

私はあなたがそれを適用したいとは思っていませんが、各繰り返しで同じことを読むことができます。その反復では、必要なところでスタイルの値を変更します。ちょうどアイデア。

+0

jsonの読書は私のコントロールを超えています。私は設定ファイルを提供するだけです。だから私はファイル内でそれを行うことになっています –

+0

あなたがjsonファイルを修正することができれば、あなたができることはあまりないと思います。誰かが道を知っているのを待ってください。コード外のファイルを変更するためのアクセス権があれば、put methogを使うだけです。 JSONObject date = jsonArray.getJSONObject(0).getJSONObject( "day"); person.put( "day"、 "Tuesday"); –

3

awkレスキュー!

$ awk -v RS= 'NR==FNR{t=$0;next} 
        {n=split($0,styles,","); 
         for(i=1;i<=n;i++) {s=t; 
             sub("bold",styles[i],s); 
             print s 
             } 
        }' template styles 

ここで、templateはjson形式のテキストで、スタイルはコンマ区切りのファイル(1つ以上の行)です。 「太字」はテンプレート内に1回だけ表示されると仮定します。