我在一个json文件中有下面的json内容,下面的json中的“pos”值是一个变量,需要用一个常量(如NNNN)替换它。
{
"qual_table": "TKGGU1.TCUSTORD",
"op_type": "INSERT",
"op_ts": "YYYY-MM-DDTHH:MI:SS.FFFFFFZ",
"pos": "G-AAAAAJcRAAAAAAAAAAAAAAAAAAAHAAoAAA==10687850.2.31.996",
"xid": "0.2.31.996",
"after": {
"CUST_CODE": "BILL",
"ORDER_DATE": "YYYY-MM-DD:HH:MI:SS",
"PRODUCT_CODE": "CAR",
"ORDER_ID": 765,
"PRODUCT_PRICE": 1500000,
"PRODUCT_AMOUNT": 3,
"TRANSACTION_ID": 100
}
}
我试过perl -i -pe 's/[A-Z]-[A-Z]*\.==*/ NNNN/g' filename.json
,但没有效果。
你能建议我一个正则表达式吗?请注意,这是一个变量,每次都有不同的长度。
2条答案
按热度按时间sbtkgmzw1#
jq
是从脚本和命令行处理JSON的事实上的标准工具,它使得用新值更新对象的字段变得很简单:(Note当标准输出是管道、文件或终端以外的其他内容时,JSON将以紧凑的形式打印在一行上。)
等效的perl one(ish)-liner将类似于
(根据您的首选JSON和文件读取模块的需要进行调整)
watbbzwu2#
只要字符串中没有引号或换行符,就应该适用于
pos
的任何长度。正如Shawn所指出的,最好使用json操作工具而不是字符串操作工具,否则你将不得不依赖于假设。