在完成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和-的所有内容。注意-如果您的一些主机有下划线,您需要在捕获字符中添加_。