我想提取pt&的价值userId在shell脚本中的变量中。
我在动态和动态变量的变量中设置的值低于需要提取pt&用户id
{"pt":"PT-24fesxPGJIHOe714iaMV-13dd3872781-sin_pos","userId":"66254363666003"}
任何人都可以告诉我如何在shell脚本中提取这些值吗?
注意:我不想仅使用JSON解析器来解析2个字符串。
谢谢!
答案 0 :(得分:1)
此字符串似乎是一个JSON字符串,最好使用专用的JSPN解析器(如 underscore )来解析此文本。安装underscore cli
后,您可以执行以下操作:
# extract pt
echo $jsonStr | underscore select '.pt'
# extract userId
echo $jsonStr | underscore select '.userId'
虽然不推荐但是如果你真的想在shell中解析它,你可以使用这样的awk:
awk -F, '$1 ~ "pt" {gsub(/[^:]+:"|"/, "", $1); print $1}
$2 ~ "userId" {gsub(/[^:]+:"|"}/, "", $2); print $2}'
或者甚至更简单:
awk -F'"' '{print $4 "\n" $8}'
<强>输出:强>
PT-24fesxPGJIHOe714iaMV-13dd3872781-sin_pos
66254363666003
答案 1 :(得分:0)
您可以使用以下脚本
var={"pt":"PT-24fesxPGJIHOe714iaMV-13dd3872781-sin_pos","userId":"66254363666003"}
echo $var
pt=`echo $var|cut -d, -f1|awk -F':' '{ print $2 }'`
echo $pt
userId=`echo $var|cut -d, -f2|awk -F':' '{ print $2 }'|tr -d '}'`
echo $userId
在此脚本中,将值存储在2个变量“pt”和“userId”中,您可以使用这些变量。