grep grep命令的输出字符串

grep grep命令的输出字符串

我想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,即“使用固定字符串”,因为我认为这些行不包含正则表达式。

相关内容