bash
  • awk
  • sed
  • 2016-07-20 65 views 1 likes 
    1

    我有一個bash腳本,它接受查詢並生成json。我期待產生新的JSON格式從bash腳本生成蛇的小寫輸出

    { "symbols" : "my_name" 
        "nid" : "MyName" 
    } 
    

    能否請你幫我修改這個查詢

    QUERY='SELECT row_to_json(o) FROM (SELECT nid , nid(????) as symbols FROM batch_types ORDER BY id::integer) AS o'; 
    echo $QUERY | psql -h localhost -U report mcore -t [email protected] | jq -s '.' > generated/enum/batch_type.json 
    

    我期待JQ經過一番作爲的sed jq -s '.' | sed "..."

    我從postgreesql獲取數據。 例子:提前:)從SQL 輸出可能是`

    [ 
    {"name" : "Xml" 
        "symbol" : "Xml" 
    }, 
    { "name": "Java", 
        "symbols": "Java" 
    } 
    ] 
    

    [ 
    {"name" : "Xml" 
        "symbol" : "xml" 
    }, 
    { "name": "Java", 
        "symbols": "java" 
    } 
    ] 
    

    感謝

    +0

    有了GNU sed:'sed's /.*/ \ L&'' – SLePort

    +0

    如上所述,想要得到蛇的情況並不是所有的小寫都使用sed。 –

    +0

    [編輯]你的問題包括**清晰簡潔,可測試的樣本輸入和預期輸出。現在它看起來像你想在你的文件的某些部分將Xml更改爲xml和Java到java,但是idk與snake case或第一個示例json有什麼關係,所以你的問題即非常不清楚,並且你的發佈示例輸入/輸出(假設它就是這樣)對此沒有幫助。 –

    回答

    0

    我能夠使用 sed -r '/symbol/ s/([a-z])([A-Z])/\1_\L\2/g' | awk '/^\{*[[:blank:]]*"symbol[s]?"[[:blank:]]*:/{ $0=tolower($0);}1'''

    謝謝大家對你的努力得到的。

    1

    我寧願AWK

    awk 'BEGIN{RS="^$"}{print tolower($0)}' >outfile 
    

    AWK [ manpage ]說:

    tolower(str)
    返回字符串str的副本,在海峽轉換成其相應的 小寫counterparts.Non字母字符的所有 ppercase字符保持不變。

    編輯

    如果你想只轉換的 「符號」 的價值爲小寫,使用如下:

    ...jq -s '.' | awk '/^\{*[[:blank:]]*"symbol[s]?"[[:blank:]]*:/{ 
    $0=tolower($0);}1'' >outfile 
    

    輸出

    [ 
    {"name" : "Xml" 
        "symbol" : "xml" 
    }, 
    { "name": "Java", 
        "symbols": "java" 
    } 
    ] 
    

    旁註:?與awk-regex是最大的一個匹配,這將匹配symbolsymbols在這種情況下。

    +0

    請你詳細說明它是如何工作的,因爲我只需要以這種方式生成符號字段......謝謝 –

    +0

    @AnimeshJain:這個信息沒有在問題中給出,所以請更新問題。給出可能的輸入和預期輸出。請參閱更新 – sjsam

    +0

    謝謝......但上面似乎不工作...可能是因爲可變空間? –

    相關問題