grep (GNU grep) 2.14
你好,
我有一个日志文件,我想过滤一个选定的单词。但是,它往往会过滤许多例如。
tail -f gateway-* | grep "P_SIP:N_iptB1T1"
这也会找到这样的词:
"P_SIP:N_iptB1T10"
"P_SIP:N_iptB1T11"
"P_SIP:N_iptB1T12"
etc
但是,我不想在 1. grep 拾取 11、12、13 等之后显示任何内容。
非常感谢您的任何建议,
grep (GNU grep) 2.14
你好,
我有一个日志文件,我想过滤一个选定的单词。但是,它往往会过滤许多例如。
tail -f gateway-* | grep "P_SIP:N_iptB1T1"
这也会找到这样的词:
"P_SIP:N_iptB1T10"
"P_SIP:N_iptB1T11"
"P_SIP:N_iptB1T12"
etc
但是,我不想在 1. grep 拾取 11、12、13 等之后显示任何内容。
非常感谢您的任何建议,
您可以将单词限制为以 1 结尾:
tail -f gateway-* | grep "P_SIP:N_iptB1T1\>"
假设您有一个只有“P_SIP:N_iptB1T1”的匹配案例,这将起作用。但是如果你想从 P_SIP:N_iptB1T1x 中提取,并且只显示一次,那么你需要限制只显示第一个匹配。
如果这些行包含示例中的引号,只需使用-E
grep 中的选项并将结束引号与\"
. 例如:
grep -E "P_SIP:N_iptB1T1\"" file
如果这些引号不在文本文件中,并且单词后有空格或结束线,您也可以匹配这些:
# The word is followed by one or more blanks
grep -E "P_SIP:N_iptB1T1\s+" file
# Match lines ending with the interesting word
grep -E "P_SIP:N_iptB1T1$" file
至少可以尝试两种方法:
grep -w pattern
匹配完整的单词。似乎也适用于这种情况,即使模式有标点符号。
grep pattern -m 1
将输出限制为第一个匹配。(也可以用grep xxx | head -1
)