Bashで大文字に文字列を追加する方法

Bashで大文字に文字列を追加する方法

以下はいくつかのサンプルコードです。

{"key_code":"a"},
{"key_code":"B"},
{"key_code":"c"},
{"key_code":"D"}

これが私がしたいことです:

{"key_code":"a"},
{"key_code":"b","modifiers":"left_shift"},
{"key_code":"c"},
{"key_code":"d","modifiers":"left_shift"}

私のIDEでは大文字と小文字を区別して検索し、"([A-Z])"次に置き換えることができますが、"\L$1", "modifiers": "left_shift"bashスクリプトでは使用できないようです。

\L私はMac OS Xを使用しており、これが問題を引き起こしているようです。

私はいくつかのバージョンを試しました:

sed -i "" 's/"([A-Z])"/"\L$1","modifiers": "left_shift"/g' file

そして

sed -i "" "s/\"([A-Z])\"/\"\L$1\",\"modifiers\": \"left_shift\"/g" file

しかし幸運はありません。あちこち歩き回ろうと努力したけれど不明awkそうです…

ベストアンサー1

Macosで見つかったFreeBSDは代替AFAIKをsedサポートしていません\L。いつでも以下を使用できますperl

perl -pi -e 's/"\p{Lu}"/\L$&,"modifiers":"left_shift"/g' file

-CUTF-8でエンコードされた非ASCII大文字(たとえばÊÇなどΞ)も処理するオプションが追加されました。

おすすめ記事