Linux下如何从日志文件中匹配指定字符串并提取对应字段写入新文件
你可以使用 grep 搭配 sed 的组合命令实现该需求,执行命令如下:
grep '"requestData":"TYPE_1"' test.log | sed -E 's/.*"requestData":"([^"]+)".*/\1/' > type_1.txt
命令各部分说明
grep '"requestData":"TYPE_1"' test.log:遍历test.log所有行,仅筛选出包含"requestData":"TYPE_1"的行,自动过滤TYPE_2、响应日志等不符合要求的内容| sed -E 's/.*"requestData":"([^"]+)".*/\1/':将筛选后的行传给sed做内容提取,用扩展正则匹配整行,捕获requestData后双引号包裹的内容,仅输出捕获到的目标值> type_1.txt:将最终提取的结果逐行重定向写入type_1.txt文件
你也可以单独用awk实现相同效果,命令如下:
awk '/"requestData":"TYPE_1"/ { match($0, /"requestData":"([^"]+)"/, arr); print arr[1] }' test.log > type_1.txt
执行完成后查看type_1.txt就能得到你预期的输出内容。
内容的提问来源于stack exchange,提问作者UglyPrince
相关产品推荐
相关产品推荐

