相似的字符串,不同的结果

亚历山德罗·马克西伦蒂(Alessandro Macilenti)

我正在创建一个Bash脚本来解析以下网页中的空气污染水平:http : //aqicn.org/city/beijing/m/

文件中有很多东西,但这是相关的位:

“iaqi”:[{ “P”: “PM25”, “V”:[ 59,21112], “我”:“由美国驻北京大使馆的空气质量监测器测量北京PM25(细颗粒物)(\ u7f8e \ u56fd \ “”,“”,“” PM10" ,‘v’:15,5,69],‘我’:“北京PM10(可吸入颗粒物),由北京市环境保护监测中心测定,

我希望脚本解析并显示2个数字:当前的PM2.5和PM10级别(上段中粗体显示的数字)。

CITY="beijing"
AQIDATA=$(wget -q 0 http://aqicn.org/city/$CITY/m/ -O -)

PM25=$(awk -v FS="(\"p\":\"pm25\",\"v\":\\\[|,[0-9]+)" '{print $2}' <<< $AQIDATA)
PM100=$(awk -v FS="(\"p\":\"pm10\",\"v\":\\\[|,[0-9]+)" '{print $2}' <<< $AQIDATA)

echo $PM25 $PM100

即使我可以正确显示PM2.5水平,也无法显示PM10水平。我不明白为什么,因为字符串是相似的。

这里有人可以解释吗?

mklement0

如果您不想或不能使用第三方实用程序jq进行JSON解析,建议您使用sed而不是awk,因为awk它不适用于此数据的基于字段的解析。

$ sed -E 's/^.*"pm25"[^[]+\[([0-9]+).+"pm10"[^[]+\[([0-9]+).*$/\1 \2/' <<< "$AQIDATA"
59 15

上面的代码应该与GNU和BSD / OSX一起使用sed

要将结果读入变量:

read pm25 pm10 < \
  <(sed -E 's/^.*"pm25"[^[]+\[([0-9]+).+"pm10"[^[]+\[([0-9]+).*$/\1 \2/' <<< "$AQIDATA")

注意我如何选择小写的变量名,因为最好避免在shell编程中使用所有大写的变量,以避免与特殊的shell和环境变量发生冲突。

如果您不能依赖源字符串中值顺序,请使用两个单独的sed命令:

pm25=$(sed -E 's/^.*"pm25"[^[]+\[([0-9]+).*$/\1/' <<< "$AQIDATA")
pm10=$(sed -E 's/^.*"pm10"[^[]+\[([0-9]+).*$/\1/' <<< "$AQIDATA")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

相似的字符串,不同的结果

来自分类Dev

压缩大量相似的字符串

来自分类Dev

如果两个相似的字符串长度不同,则strcmp返回什么?

来自分类Dev

R组以相似的字符串开头的不同列的行的总和

来自分类Dev

为什么Java字符串hashCode在不同但相似的geohash字符串上有很多冲突?

来自分类Dev

LINQ搜索相似的字符串(名称)

来自分类Dev

DateTime TryParseExact是否无法解析相似的字符串?

来自分类Dev

如何快速删除相似的字符串?

来自分类Dev

计算相似的子字符串SQL查询

来自分类Dev

如何快速删除相似的字符串?

来自分类Dev

相似的字符串查找循环的矢量化

来自分类Dev

在数组中查找相似的字符串

来自分类Dev

用相似的字符串对行进行分组

来自分类Dev

Java区分四个相似的字符串

来自分类Dev

DateTime TryParseExact是否无法解析相似的字符串?

来自分类Dev

在javascript字符串中搜索相似的值

来自分类Dev

匹配的字符串具有相似的结尾文本

来自分类Dev

将相似的字符串附加到文件中

来自分类Dev

使用非常相似的正则表达式拆分字符串后的奇怪不同的输出

来自分类Dev

Python字符串替换两个相似单词的不同结果

来自分类Dev

检查两个字符串是否非常相似(相似的字符,模式等)

来自分类Dev

相似的方法返回不同的结果

来自分类Dev

如何上下移动字符串并从中删除相似的字符串?

来自分类Dev

将一组相似的字符串映射到较短的字符串

来自分类Dev

字符串替换:如何处理相似的字符串和空格

来自分类Dev

在字符串数组中寻找相似的字符串

来自分类Dev

如何上下移动字符串并从中删除相似的字符串?

来自分类Dev

从字符串中替换/删除相似的子字符串

来自分类Dev

类似的 C 字符串有不同的大小

Related 相关文章

  1. 1

    相似的字符串,不同的结果

  2. 2

    压缩大量相似的字符串

  3. 3

    如果两个相似的字符串长度不同,则strcmp返回什么?

  4. 4

    R组以相似的字符串开头的不同列的行的总和

  5. 5

    为什么Java字符串hashCode在不同但相似的geohash字符串上有很多冲突?

  6. 6

    LINQ搜索相似的字符串(名称)

  7. 7

    DateTime TryParseExact是否无法解析相似的字符串?

  8. 8

    如何快速删除相似的字符串?

  9. 9

    计算相似的子字符串SQL查询

  10. 10

    如何快速删除相似的字符串?

  11. 11

    相似的字符串查找循环的矢量化

  12. 12

    在数组中查找相似的字符串

  13. 13

    用相似的字符串对行进行分组

  14. 14

    Java区分四个相似的字符串

  15. 15

    DateTime TryParseExact是否无法解析相似的字符串?

  16. 16

    在javascript字符串中搜索相似的值

  17. 17

    匹配的字符串具有相似的结尾文本

  18. 18

    将相似的字符串附加到文件中

  19. 19

    使用非常相似的正则表达式拆分字符串后的奇怪不同的输出

  20. 20

    Python字符串替换两个相似单词的不同结果

  21. 21

    检查两个字符串是否非常相似(相似的字符,模式等)

  22. 22

    相似的方法返回不同的结果

  23. 23

    如何上下移动字符串并从中删除相似的字符串?

  24. 24

    将一组相似的字符串映射到较短的字符串

  25. 25

    字符串替换:如何处理相似的字符串和空格

  26. 26

    在字符串数组中寻找相似的字符串

  27. 27

    如何上下移动字符串并从中删除相似的字符串?

  28. 28

    从字符串中替换/删除相似的子字符串

  29. 29

    类似的 C 字符串有不同的大小

热门标签

归档