如何在执行group-3-vm1
之后提取grep
?
$ 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/
答案 0 :(得分:3)
这个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
答案 1 :(得分:1)
试试这个:
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和 - 的所有内容。注意 - 如果某些主机具有下划线,则需要将_添加到捕获字符。