从日志中提取部分行

从日志中提取部分行

我的日志文件中有以下几行:

<ROW USER_GID="TEST 1" FLOW="Norm" SEQUENCE="9"/>
<ROW USER_GID="TEST 2" FLOW="Norm" SEQUENCE="2"/>
<ROW USER_GID="TEST 3" FLOW="Norm" SEQUENCE="2"/>

USER_GID我正在尝试提取每一行中的值。我可以使用grep/awksed命令完成相同的任务吗?

在上述情况下,输出应返回:

TEST 1 
TEST 2
TEST 3

答案1

虽然您可以通过 执行此操作sed,但您最好使用 XML 解析器来获取适合您的行。

也就是说,您可以使用以下 sed 命令,假设所有数据都采用相同的格式。

sed -n 's/.*USER_GID="\([^"]*\)".*/\1/p' log_file

答案2

通过下面的 awk 命令完成

awk -F '"' '/USER_GID/{print $2}' filename

输出

TEST 1
TEST 2
TEST 3

相关内容