キーワードを使用した文字列の解析

キーワードを使用した文字列の解析

gps location日付、時刻、位置情報を返すbashコマンドを使用しています。

[john@hostname :~/develp] $ gps location
Location: {"date": "16/07/20", "time": "19:01:22", "latitude": "34.321", "longitude": "133.453", "altitude": "30m"}

硬度をファイルに書きたいのですが、そこに到達する前に文字列を正しく解析する必要があります。

[john@hostname :~/develp] $ variable=`gps location | awk '/"longitude":/ {print $9}'`
[john@hostname :~/develp] $ echo $variable
"133.453",
[john@hostname :~/develp] $

現在、awk硬度を検索するのではなく、文字列全体を取得して9番目の文字列を見つけます。理想的には、正規表現/キーワードアプローチを使用して硬度を見つけ、次の文字列を探したいと思います。試してみてgrep | cutみましたsed。運が悪い。私ができることはawk

ベストアンサー1

これを削除すると、Location:JSONが残ります。

$ echo '{"date": "16/07/20", "time": "19:01:22", "latitude": "34.321", "longitude": "133.453", "altitude": "30m"}' |
    jq .longitude
"133.453"

キーワードをあらかじめ印刷しないオプションがある場合は、マニュアルページをご覧ください。gpsキーワードを削除しないと簡単です。例:Location:

$ echo 'Location: {"date": "16/07/20", "time": "19:01:22", "latitude": "34.321", "longitude": "133.453", "altitude": "30m"}' |
    cut -d':' -f2- | jq .longitude
"133.453"

または:

$ echo 'Location: {"date": "16/07/20", "time": "19:01:22", "latitude": "34.321", "longitude": "133.453", "altitude": "30m"}' |
    sed 's/Location://' | jq .longitude
"133.453"

おすすめ記事