使用 awk 提取 JSON 字符串中的字段
Linux awk JSON 大约 904 字需求
从aaa.log
文件中(文本为JSON
串)中提取出phone
字段对应的值。
{"phone":"18633333333","code":"333333"}
{"phone":"18633333333","code":"000000"}
{"aaa":"888888","code":"888888","phone":"123456"}
{"phone":"18611111111","code":"111111"}
{"phone":"18655555555","code":"555555"}
{"aaa":"888888","phone":"7890123","code":"888888"}
substr 字符串解决
适用于字段长度相同的情况
awk -F '"phone":"' '{print substr($2,0,11)}' aaa.log
match 正则匹配
正则:\"([^\"]*)\"
,匹配后取数组a
第0
个元素。
awk -F '"phone":' 'match($2,/\"([^\"]*)\"/,a){print a[0]}' aaa.log
输出,带双引号:
"18633333333"
"18633333333"
"123456"
"18611111111"
"18655555555"
"7890123"
match 正则匹配方法二
正则:\"([^\"]*)\"
,匹配后取数组a
第1
个元素。
awk -F '"phone":' 'match($2,/\"([^\"]*)\"/,a){print a[1]}' aaa.log
输出,不带双引号:
18633333333
18633333333
123456
18611111111
18655555555
7890123
补充
执行matc
h匹配时可能有警告信息如下,原因是awk
版本5.0.0
之后会有此提示信息,4.2.1
版本无此警告信息。
awk: cmd. line:1: warning: regexp escape sequence `\"' is not a known regexp operator
阅读 6561 · 发布于 2019-10-28
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
算法:解析中缀表达式阅读 599
-
Spring Boot 设置 Cookie 和 Session 过期时间阅读 6008
-
Nginx 使用 X-Accel-Redirect 实现静态文件下载的统计、鉴权、防盗链、限速等阅读 5367
-
Java WebSocket The remote endpoint was in state [TEXT_FULL_WRITING] which is an invalid state for called method阅读 1588
-
JavaScript 监听标签页切换阅读 587
-
PostgreSQL 时间戳转毫秒值并去除小数位阅读 2218
-
Docker Compose 容器编排阅读 345
-
PHP 获取毫秒值时间戳阅读 2451
-
MySQL 查询去重阅读 1550
-
SQL 查询出成绩表中成绩大于 90 的学生名字阅读 722