0

我想在 shell 脚本的变量中提取 pt & userId 的值。

我在变量中设置了以下值,该变量是动态出现的,需要提取 pt 和 userId

{"pt":"PT-24fesxPGJIHOe714iaMV-13dd3872781-sin_pos","userId":"66254363666003"}

谁能告诉我如何在 shell 脚本中提取这些值?

注意:我不想使用 JSON 解析器来解析 2 个字符串。

谢谢!

4

2 回答 2

1

此字符串似乎是 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
于 2013-04-04T05:59:19.447 回答
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”中,您可以使用它们。

于 2013-04-04T06:12:06.037 回答