如何 grep 查找字母后跟空格和标点符号?

如何 grep 查找字母后跟空格和标点符号?

我有一条线叫

10909101 - testingName - Log8767, File787 - 8:50PM  

现在我只想使用 grep 来获取testingName我的输出。

第一个数字的位数可能会有所不同(另一行可能将12其自身作为第一个数字),因此我无法使用任何基于数字的 grep。那么我该如何解决这个问题呢?

答案1

鉴于所有数据的格式都相同,grep因此这是错误的工具。当然,它是可用的,但使用它是一件麻烦事——这不是grep设计的目的,更好的工具是awk

由于您的分隔符始终是“空格,破折号,空格”序列,即-,您可以这样做:

$ awk -F' - ' '{print $2}' <filename>

其中<filename>是包含您正在搜索的数据的文件的名称,您将获得整个文件中的所有行,这些行被修剪为仅第二个条目。如果您不喜欢使用三个字符分隔符,您可以这样做:

$ awk -F- '{print $2}' | tr -d ' '

它只是抓取从第一个-到第二个的所有内容,包括空格,并通过 删除空格tr。当然,如果您的文件名中有空格,这会导致问题,您将需要坚持第一个示例。

答案2

这使用的实例grep,但它纯的grep

echo '10909101 - testingName - Log8767, File787 - 8:50PM  ' | \
grep -o '\- [[:alpha:]]* \-' | grep -o '[[:alpha:]]*'

输出:

testingName

相关内容