需求
从aaa.txt
文件中(文本为JSON
串)中提取出msg
字段对应的值。
{"msg":"201","code":"333333"}
{"msg":"270","code":"000000"}
{"msg":"101","code":"888888"}
{"msg":"526","code":"111111"}
{"msg":"201","code":"555555"}
{"msg":"123",,"code":"888888"}
解决方法
-
substr 字符串解决,substr怎么填写参数,自己调试来定
awk -F '"msg":' '{print substr($2,2,3)}' aaa.txt
-
match 正则匹配
/**
{"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"}
*/
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