我想grep
根据错误“MyOwnError”从日志中获取 Id,然后使用相同的 Id 来获取整个日志中出现 Id 的整行。
例如:
假设有一个文件File1
:
animal:Dogs hate the animal:catsF and no-one else
animal:catsF hate the animal:fish
animal:catsF also hate animal:humans
我的搜索字符串是“Dogs”
grep 'Dogs' File1 | grep -o 'animal:.*F'
这会给我animal:catsF
,现在我想要grep
同一个文件的“catsF” File1
。
我尝试过xargs
,但它选择了文件名而不是参数。
grep 'Dogs' File1 | grep -o 'animal:.*F' | xargs grep File1
请更正此命令或提供正确的命令。
答案1
该命令将返回第一行至,F
因为它以 开头animal:
。要仅获取一个单词,您可以指定animal:
和 之间没有空格F
:
grep 'Dogs' File1 | grep -o 'animal:[^ ]*F'
要列出包含该关键字的所有行,请grep
再次通过管道将输出连接到,使用-f-
从标准输入(即管道)读取模式:
| grep -Ff- File1
我还使用了-F
,即“使用固定字符串”,因为我认为这些行不包含正则表达式。