You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过单行Shell命令提取Hive日志中Parsing command后的SQL语句

提取Hive日志中"Parsing command:"后的SQL语句(单行命令实现)

当然可以!你完全能用一行命令实现这个需求,只需要在现有命令基础上搭配文本处理工具,比如sed或awk就能轻松过滤出你要的SQL内容。下面是几个实用的方案:

方案1:使用grep + sed组合

这个方案先过滤出包含目标字符串的行,再通过sed替换掉冒号前的所有内容:

tail -f /var/log/hive/hiveserver2.log | grep "Parsing command" | sed 's/.*Parsing command: //'

解释:sed的s/.*Parsing command: //是替换规则,.*会匹配Parsing command:之前的所有字符(包括日志时间、进程信息等),将其替换为空字符串后,剩下的就是你需要的SQL语句了。

方案2:使用grep + awk组合

awk可以指定自定义分隔符,这里我们把Parsing command:作为分隔符,直接提取分隔后的第二部分内容:

tail -f /var/log/hive/hiveserver2.log | grep "Parsing command" | awk -F 'Parsing command: ' '{print $2}'

解释:-F 'Parsing command: '设置分隔符,$2代表分隔后的第二个字段,也就是冒号后面的SQL语句。

方案3:一步到位(无需单独grep)

其实sed本身就具备过滤行的能力,这样可以少用一个管道命令,更简洁:

tail -f /var/log/hive/hiveserver2.log | sed -n '/Parsing command/s/.*Parsing command: //p'

解释:-n表示只输出我们指定的行;/Parsing command/用来过滤出包含目标字符串的行;最后执行替换并打印(p)处理后的内容。

如果你的Hive日志中Parsing command:后的SQL语句都是单行的,上面的方案都能完美工作。如果遇到跨行的SQL日志,可能需要稍微调整命令,但一般Hive的这条日志都是单行记录的。

内容的提问来源于stack exchange,提问作者HP.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:54:51