4

我有一个日志文件,其中包含类似的条目

INFO 2013-08-16 13:46:48,660 Index=abc:12 insertTotal=11  
INFO 2013-08-16 13:46:48,660 Index=abcd:12 insertTotal=11  
INFO 2013-08-16 13:46:48,660 Index=def:134 insertTotal=11  
INFO 2013-08-16 13:46:48,660 Index=abkfe insertTotal=11
INFO 2013-08-16 13:46:48,660 Index=lmkfe insertTotal=11
INFO 2013-08-16 13:46:48,660 Index=lmkfe insertTotal=11

我想 grep 并提取与我的模式匹配的单词abc:<some_number>and def:<some_number>

$ cat "log.txt" | grep -w "abc" -w "def" >> "failed_values.txt";

所以在这种情况下,我failed_values.txt应该只有

abc:12
def:134

需要注意的关键是我的模式以 a 结尾,:后跟一个数字,然后是一个空格,例如abc:122.

4

3 回答 3

6

尝试以下操作:

$ grep  -Eio '[a-z]+:[0-9]+' log.txt 
abc:12
abcd:12
def:134
  • -i忽略大小写。
  • -o只打印匹配的部分。

更新

仅匹配abc/ def

$ grep  -Eio '\b(abc|def):[0-9]+\b' log.txt 
abc:12
def:134
  • (abc|def):: 匹配abcor(|)def后跟:.
  • [0-9]+: 匹配的数字。
  • \b: 匹配单词边界
于 2013-08-20T07:01:29.650 回答
1
$ grep -Eo "(abc|def):[0-9]*" log.txt
abc:12
def:134
于 2013-08-20T07:04:46.990 回答
0

这应该这样做:

grep "[ad][be][cf]:[0-9]*" [your file]

于 2013-08-20T07:04:14.787 回答