我有以下輸入:
{"_id":{"$oid":"5a62094b2213930f39856faa"},"zip":"68137","visit_date":{"$date":"2017-11-28T15:36:00.000Z"},"phone":"402-000-0819","city":"Omaha","state":"NE","gender":"female","dob":{"$date":"2018-01-19T00:00:00.000Z"},"firstname":"Joshua","user_ip":"42.668.23.195","lastname":"Maestle","done":1.0
{"_id":{"$oid":"5a62094b2213930f39856fb4"},"zip":"85013","visit_date":{"$date":"2017-11-28T11:32:00.000Z"},"city":"Phoenix","state":"AZ","gender":"male","dob":{"$date":"2018-01-19T00:00:00.000Z"},"firstname":"Andre","lastname":"Lippens","done":1.0
{"_id":{"$oid":"5a62094b2213930f39856fbc"},"zip":"70535","visit_date":{"$date":"2017-11-28T17:07:00.000Z"},"phone":"000-305-1888","city":"Eunice","state":"LA","gender":"male","user_ip":"12.158.33.145","dob":{"$date":"2018-01-19T00:00:00.000Z"},"firstname":"Derek","lastname":"Moore"
我需要從每一行中提取 IP 欄位的值。對于沒有 IP 欄位的行,我想列印一個空行。
期望的輸出:
42.668.23.195
12.158.33.145
我已經嘗試過:
grep -o -P '(?<="user_ip":").*(?=")'
但遺憾的是,這并沒有保留空白的第二行。
uj5u.com熱心網友回復:
如果它不必是 grep,這里有一個簡單的選項:
perl -lpe '/"user_ip":"(.*?)"/; $_ = $1'
uj5u.com熱心網友回復:
grep 沒有該功能,但您可以使用這個簡單的 Perl 程式來執行此操作:
perl -nle'print /"user_ip":"(. ?)"/ ? $1 : ""' datafile.json
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408163.html
標籤:
