我不明白sed,awk或grep - 我尝试了最后3个小时才得到结果,但我没有得到正确答案。
我有什么: 我从icloud.com获取此信息
{u'timeStamp': 1470252602355, u'locationFinished': True, u'longitude': XX.XXXXXXXXXXXXX, u'positionType': u'GPS-Course', u'locationType': None, u'latitude': XX.XXXXXXXXXXXXX, u'isOld': False, u'isInaccurate': False, u'horizontalAccuracy': 200.0}
这是我的iPhone的位置。
但我只需要纬度和经度。我尝试过AWK,sed和grep - 我没有成为正确的结果。
答案 0 :(得分:1)
在sed中(其中a.json是你的文件),它只打印经度值和纬度值):
documentReady
答案 1 :(得分:1)
看起来像一个json。您可以使用jsawk解析它,我没有使用它,但看起来它可以轻松解决您的问题。
echo "your json string" | jsawk "this.latitude"
注意:这将给出答案(谢谢sjsam)。如果json字符串变化,处理正则表达式会变得更复杂。所以最好处理这个字符串,因为json不是普通的字符串。
答案 2 :(得分:1)
这个grep管道会阻塞这些字段:
grep -o "'l[^:]\+itude':[^,]\+"
答案 3 :(得分:0)
你去......
if(typeof window != "object")
self.window = self;
或,没有 $ tr ',' '\n' <file | grep '\(lati\|longi\)tude'
u'longitude': XX.XXXXXXXXXXXXX
u'latitude': XX.XXXXXXXXXXXXX
tr
答案 4 :(得分:0)
与jsawk
一样,您可以使用jq
来处理您的JSON:
json="{u'timeStamp': 1470252602355, u'locationFinished': True, u'longitude': XX.XXXXXXXXXXXXX, u'positionType': u'GPS-Course', u'locationType': None, u'latitude': XX.XXXXXXXXXXXXX, u'isOld': False, u'isInaccurate': False, u'horizontalAccuracy': 200.0}"
echo "$json" | jq '.latitude'
答案 5 :(得分:0)
$ awk -v RS=',' -F'[\n:][[:space:]]*' '{for (i=1;i<NF;i++) if ($i ~ /(lat|long)itude/) print $(i+1) }' file
XX.XXXXXXXXXXXXX
XX.XXXXXXXXXXXXX