0

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

grep -li 'search string' *

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

4

1 回答 1

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' {}" \;
于 2013-10-08T05:41:33.030 回答