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>ますdef:<some_number>

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

したがって、この場合、私failed_values.txt

abc:12
def:134

注意すべき重要な点は、私のパターンが の:後に数字とスペースが続くこと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)::abcまたは (|)の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 に答える