使用一个Grep来运行另一个

时间:2013-10-08 05:34:05

标签: regex macos bash grep

所以,这是我的用例。我有一个文件夹,里面有大约一千个文件(日志)。首先,我'cd'到该文件夹​​,然后我使用一个grep来确定特定类型的日志列表,如下所示:

grep -li 'search string' *

这会转储包含我的搜索字符串的所有文件的列表。这个子集是我需要使用的子集。接下来我需要做的是从每个文件中提取信息行。即,它们具有以特定字符串开头的版本号。此外,我需要找到文件中的第一行,其中包含由[]或<>包装的文本。然后我需要将所有这些转储到一个文件中(我知道我可以通过将> filename.type附加到grep的末尾来实现)。此外,查找统计信息会很有帮助,例如我的文件子集中有多少包含任何给定的字符串。我知道这是一个令人费解的问题,但我不知道如何分手。任何有用的grep语句的帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

要查找包含两个搜索字符串的文件列表,您可以说:

find . -maxdepth 1 -type f -exec sh -c "grep -iq 'string1' {} && grep -iq 'string2' {} && echo {}" \;

要在包含string2的文件中列出包含string1的行,您可以说:

find . -maxdepth 1 -type f -exec sh -c "grep -iq 'string1' {} && grep -i 'string2' {}" \;