我想在 shell 脚本的变量中提取 pt & userId 的值。
我在变量中设置了以下值,该变量是动态出现的,需要提取 pt 和 userId
{"pt":"PT-24fesxPGJIHOe714iaMV-13dd3872781-sin_pos","userId":"66254363666003"}
谁能告诉我如何在 shell 脚本中提取这些值?
注意:我不想使用 JSON 解析器来解析 2 个字符串。
谢谢!
此字符串似乎是 JSON 字符串,最好使用专用 JSPN 解析器(如下划线)来解析此文本。安装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
您可以使用以下脚本
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”中,您可以使用它们。