Hunter的大杂烩 技术学习笔记

2020-04-09

sed 正则表达式处理 json数据

Filed under: 技术话题 — hunter @ 11:20 pm

有类似如下的单行json数据,希望提取其中的 add 字段

[code language=”json”]

[{”:False,’host’:”,’path’:”,’id’:’replace_yourself’,’tls’:”,’v’:’2′,’net’:’tcp’,’add’:’1.1.1.1′,’type’:’none’},{”:False,’host’:”,’path’:”,’tls’:”,’id’:’replace_yourself’,’v’:’2′,’aid’:’2′,’net’:’tcp’,’add’:’2.2.2.2′,’type’:’none’}]

[/code]

  1. 先用tr命令,将数组每个元素分行

[code language=”bash”]

tr ‘}’ ‘\n’

[/code]

2.  利用正则表达式找出 add 字段及其网址,并在前后加上换行符

[code language=”bash”]

sed ‘s/\(\"add\": \"[0-9.a-z\-]\+\"\)/\n\1\n/g’

[/code]

完整命令

[code language=”bash”]

cat json.dat |tr ‘}’ ‘\n’ |sed ‘s/\(\"add\": \"[0-9.a-z\-]\+\"\)/\n\1\n/g’ | grep "add"

[/code]

sed 使用心得:
a. 元组选择符圆括号前后要加上反斜杠;
b. 加号通配符前也要加上反斜杠
c. \1, \2 代表正则匹配的第几个元组

No Comments

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress