【发布时间】:2015-01-01 22:38:02
【问题描述】:
我一直在使用 Grep 和 Cut 从日志文件中收集信息,但是当行中的字数发生变化时,我无法提取字符串,例如;
这条线可以是
[2014-12-31 21:00] Host: Word1 (LOCATION) [140.56 km] 38.582 ms
或
[2014-12-31 12:00] Host: Word1 Word2 (LOCATION) [76.50 km] 49.508 ms
或
[2014-12-31 12:00] Host: Word1 Word2 Word3 (LOCATION) [76.50 km] 49.508 ms
使用我当前的代码,
host_=`grep Host: $FILE | tail -1 | cut -d' ' -f4-`
我可以得到以下内容
Word1 Word2 (LOCATION) [140.56 km] 38.582 ms
我想做的只是得到单词加上括号中的位置,而不是剩余的信息,这样我就得到了这个
Word1 Word2 (LOCATION)
字符串末尾的距离和时间(虽然它们会更改值)始终位于同一位置,并且“日期/时间”和单词“Host:”始终位于字符串的开头。
这里有人能指出我需要使用的正确方向吗?
我试过谷歌搜索,但没有找到任何东西,但我不确定我在寻找什么。
谢谢
【问题讨论】:
-
这有帮助吗?
grep Host: $FILE | tail -1 | grep -Po '.*Host: \K.*\)' -
@Kent - 效果很好,非常感谢。我将确保我了解它是如何以及为什么起作用的。再次感谢您
-
好的,我添加了答案并附有简要说明。