如何在greping后从文件中提取一些东西



在完成grep后如何提取group-3-vm1

$ cat output/tpcds_query_1a_71_mr.out | grep "Tracking URL" | tail -1

结果如下:

Starting Job = job_1442587212068_0126, Tracking URL = http://group-3-vm1:8088/proxy/application_1442587212068_0126/

这个awk命令替换了grep和tail命令,同时还提取了感兴趣的文本:

$ awk -F'[:/]' '/Tracking URL/{n=$4;} END{print n;}' output/tpcds_query_1a_71_mr.out 
group-3-vm1

工作原理

  • -F'[:/]'

    将字段分隔符设置为冒号或斜杠。

  • /Tracking URL/{n=$4;}

    查找包含Tracking URL的行,并将第四个字段保存在变量n中。

  • END{print n;}

    到达文件末尾后,这将打印我们找到的最后一个n

例子

下面是一个示例测试文件和输出:

$ cat output/tpcds_query_1a_71_mr.out 
Starting Job = job_1442587212068_0126, Tracking URL = http://group-1-vm1:8088/proxy/application_1442587212068_0126/
Starting Job = job_1442587212068_0126, Tracking URL = http://group-2-vm1:8088/proxy/application_1442587212068_0126/
Starting Job = job_1442587212068_0126, Tracking URL = http://group-3-vm1:8088/proxy/application_1442587212068_0126/
Starting Job = job_1442587212068_0126, No Track URL = http://group-4-vm1:8088/proxy/application_1442587212068_0126/
$ awk -F'[:/]' '/Tracking URL/{n=$4;} END{print n;}' output/tpcds_query_1a_71_mr.out 
group-3-vm1

试试这个:

cat output/tpcds_query_1a_71_mr.out | grep "Tracking URL" | tail -1 | sed 's/.+Tracking URL = http://([a-zA-Z0-9-]+).*/1/g'

一些解释。这将使用您的解决方案,但将结果通过sed进行管道传输,以剥离所有内容直至包括http://,并使用组捕获((…))来捕获a- z0 -9和-的所有内容。注意-如果您的一些主机有下划线,您需要在捕获字符中添加_。

最新更新