使用bashNOTJQ转换为小写的json键

我有一个 json,它是具有下一个语法的字典列表:

 [ 
     {
    "Date_and_Time": "Dec 29, 2017 15:35:37",
    "Componente": "Bar",
    "IP_Origen": "175.11.13.6",
    "IP_Destino": "81.18.119.864",
    "Country": "Brazil",
    "Age": "3"

},

{

    "Date_and_Time": "Dec 31, 2017 17:35:37",
    "Componente": "Foo",
    "IP_Origen": "176.11.13.6",
    "IP_Destino": "80.18.119.864",
    "Country": "France",
     'Id': '123456',
     'Car': 'Ferrari'

},
{
  "Date_and_Time": "Dec 31, 2017 17:35:37",
    "Age": "1",
    "Country": "France",
     'Id': '123456',
     'Car': 'Ferrari'
},
{
    "Date_and_Time": "Mar 31, 2018 14:35:37",
    "Componente": "Foo",
    "Country": "Germany",
     'Id': '2468',
     'Genre': 'Male'

}
]

json 真的很大,每个字典都有不同数量的键/值字段。而我想要做的是将KEYS的每个字符都改写成小写。预期输入:

[ 
     {
    "date_and_time": "Dec 29, 2017 15:35:37",
    "componente": "Bar",
    "ip_origen": "175.11.13.6",
    "ip_destino": "81.18.119.864",
    "country": "Brazil",
     .
     .
     .
 

回答

awk 'NF>1{$1=tolower($1)} 1' FS=: OFS=: file
perl -pe 's/.*?:/L$&/' file

GNU sed:

sed 's/[^:]*:/L&/' file

:每行字符之前的所有内容转换为小写。为了使其正常工作,每个键/值对必须占据一行,并且键不能包含:字符。在 awk 中,它可以通过拆分 at 来完成,:以便可以转换第一个字段。在 perl 中,替换运算符用于将第一个之前的所有内容替换为:自己被L转义符小写的内容(信息 in man 1 perlop, perldoc.perl.org)。GNU sed 提供了一个类似于 perl 的L序列(仅可用于s///in sed的替换部分)。


以上是使用bashNOTJQ转换为小写的json键的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>