考虑这个日志文件
SN PID Date Status
1 P01 Fri Feb 14 19:32:36 IST 2014 Alive
2 P02 Fri Feb 14 19:32:36 IST 2014 Alive
3 P03 Fri Feb 14 19:32:36 IST 2014 Alive
4 P04 Fri Feb 14 19:32:36 IST 2014 Alive
5 P05 Fri Feb 14 19:32:36 IST 2014 Alive
6 P06 Fri Feb 14 19:32:36 IST 2014 Alive
7 P07 Fri Feb 14 19:32:36 IST 2014 Alive
8 P08 Fri Feb 14 19:32:36 IST 2014 Alive
9 P09 Fri Feb 14 19:32:36 IST 2014 Alive
10 P010 Fri Feb 14 19:32:36 IST 2014 Alive
当我做=> grep "P01" File
输出为:(按预期)
1 P01 Fri Feb 14 19:32:36 IST 2014 Alive
10 P010 Fri Feb 14 19:32:36 IST 2014 Alive
但当我做=> grep " P01 " File
(注意 P01 之前和之后的空格)
我没有得到任何输出!
问题: grep
匹配一行中的模式,因此“P01”(的空间)应与P01的第一个PID匹配,因为它有空格围绕它......但似乎这种逻辑是错误的......我在这里看到的明显的东西!!!?
答案 0 :(得分:2)
如果日志使用制表符而不是空格,则grep模式将不匹配。我会在你想要找到的单词上添加单词边界:
grep '\<P01\>' file
如果您确实想在模式中使用空格,请使用以下方法之一:
grep '[[:blank:]]P01[[:blank:]]' file # horizontal whitespace, tabs and spaces
grep -P '\sP01\s' file # using Perl regex