Chinaunix
标题:
字符处理
[打印本页]
作者:
dstnow
时间:
2020-03-02 09:06
标题:
字符处理
源
{"Status":200,"Msg":"成功","Data":[{"TELCODE":"27","SKEY":"618aac13f9d7d751","PN":"791496908"},{"TELCODE":"27","SKEY":"ee29857654d0c8d8","PN":"791898777"},{"TELCODE":"27","SKEY":"6eeba009e8cc2b8d","PN":"714508857"}]}
其中PN和SKEY可能有多个 这里面是三个
需要换完成
PN|http://=SKEY 这种格式
比如
791496908|http://=618aac13f9d7d751
791898777|http://=ee29857654d0c8d8
714508857|http://=6eeba009e8cc2b8d
作者:
legs
时间:
2020-03-02 14:23
perl -nE'say"$2|http://=$1" while/SKEY":"([^"]+)","PN":"((?1))/g' file
作者:
legs
时间:
2020-03-02 14:25
你可以考虑JSON命令jq之类的处理,给你的是用捕获组,不费脑子
perl -nE'say"$2|http://=$1" while/SKEY":"([^"]+)","PN":"((?1))/g' file
作者:
legs
时间:
2020-03-02 14:25
你可以考虑JSON命令jq之类的处理,给你的是用捕获组,不费脑子
perl -nE'say"$2|http://=$1" while/SKEY":"([^"]+)","PN":"((?1))/g' file
作者:
legs
时间:
2020-03-02 14:25
你可以考虑JSON命令jq之类的处理,给你的是用捕获组,不费脑子
perl -nE'say"$2|http://=$1" while/SKEY":"([^"]+)","PN":"((?1))/g' file
作者:
legs
时间:
2020-03-02 14:26
你可以考虑JSON命令jq之类的处理,给你的是用捕获组,不费脑子
perl -nE'say"$2|http://=$1" while/SKEY":"([^"]+)","PN":"((?1))/g' file
作者:
legs
时间:
2020-03-02 15:42
perl -nE'say"$2|http://=$1" while/SKEY":"([^"]+)","PN":"((?1))/g'
作者:
legs
时间:
2020-03-02 16:44
perl -nE'say"$2|http://=$1" while/SKEY":"([^"]+)","PN":"((?1))/g' file
作者:
chengchow
时间:
2020-03-02 16:58
json格式
当成字典去处理就可以了
作者:
Looiml
时间:
2020-03-02 18:23
awk -F'[][{}":,]+' '{for(i=1;i<=NF;i++)if($i=="SKEY")print $(i+3)"|http://="$(i+1)}' a
791496908|http://=618aac13f9d7d751
791898777|http://=ee29857654d0c8d8
714508857|http://=6eeba009e8cc2b8d
作者:
dstnow
时间:
2020-03-02 20:48
回复
10#
Looiml
大神厉害 一直没搞明白 双重循环
作者:
cfwyy
时间:
2020-03-03 10:20
可以试试专门针对 json的命令行工具 jq, 我也是现学的
jq -r 'foreach .Data[] as $i ("";$i.PN+"http://="+$i.SKEY;.)' json.txt
复制代码
作者:
legs
时间:
2020-03-03 14:21
昨天回了五次都不让回复,你jq或者直接可以替换类的,Perl,sed
perl -nE'say"$2|http://=$1" while/SKEY":"([^"]+)","PN":"((?1))/g' file
作者:
legs
时间:
2020-03-04 07:46
本帖最后由 legs 于 2020-03-04 07:47 编辑
前天回了五遍,都被吞帖了
perl -nE'say"$2|http://=$1" while/SKEY":"([^"]+)","PN":"((?1))/g' file
作者:
wh7211
时间:
2020-03-19 17:07
回复
1#
dstnow
cat 1
{"Status":200,"Msg":"成功","Data":[{"TELCODE":"27","SKEY":"618aac13f9d7d751","PN":"791496908"},{"TELCODE":"27","SKEY":"ee29857654d0c8d8","PN":"791898777"},{"TELCODE":"27","SKEY":"6eeba009e8cc2b8d","PN":"714508857"}]}
awk -F"{" '{for(i=1;i<=NF;i++){if($i~/SKEY/&&$i~/PN/){a=".*SKEY\042:\042([^\042]+).*PN\042:\042([^\042]+)";match($i,a,b);print b[2]"|http://="b[1]}}}' 1
791496908|http://=618aac13f9d7d751
791898777|http://=ee29857654d0c8d8
714508857|http://=6eeba009e8cc2b8d
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2