grep --排除-来自 : how to include multiple files

标签 grep

如果我多次使用 --exclude-from (以包含多个文件),grep 将仅使用最后一个 --exclude-from 还是会将所有过滤器“或”在一起,就像它们位于一个文件中一样(并使用一个 --exclude-from)?

最佳答案

尽管从手册页或 grep 的源代码中都不清楚这一点,但排除是附加的。这是我的例子:

创建五个名为“file.a”到“file.f”的文件,每个文件包含“test_string”,以及五个过滤器“ex_a.lst”到“ex_f.lst”,其中包含“*.a”到“*.f” ,分别是:

$ for X in a b c d e f; do echo test_string > file.$X; echo file.$X > ex_$X.lst; done

$ ls -l
total 48
-rw-rw-r-- 1 user group  7 Jan 17 17:02 ex_a.lst
-rw-rw-r-- 1 user group  7 Jan 17 17:02 ex_b.lst
-rw-rw-r-- 1 user group  7 Jan 17 17:02 ex_c.lst
-rw-rw-r-- 1 user group  7 Jan 17 17:02 ex_d.lst
-rw-rw-r-- 1 user group  7 Jan 17 17:02 ex_e.lst
-rw-rw-r-- 1 user group  7 Jan 17 17:02 ex_f.lst
-rw-rw-r-- 1 user group 12 Jan 17 17:02 file.a
-rw-rw-r-- 1 user group 12 Jan 17 17:02 file.b
-rw-rw-r-- 1 user group 12 Jan 17 17:02 file.c
-rw-rw-r-- 1 user group 12 Jan 17 17:02 file.d
-rw-rw-r-- 1 user group 12 Jan 17 17:02 file.e
-rw-rw-r-- 1 user group 12 Jan 17 17:02 file.f

$ cat file.a
test_string

$ cat ex_a.lst 
file.a

在当前目录中搜索“test_string”,不带过滤器:

$ grep -R test_string | sort
file.a:test_string
file.b:test_string
file.c:test_string
file.d:test_string
file.e:test_string
file.f:test_string

所有文件都匹配。现在从三个文件添加三个过滤器:

$ grep -R test_string --exclude-from=ex_a.lst --exclude-from=ex_c.lst --exclude-from=ex_e.lst | sort
file.b:test_string
file.d:test_string
file.f:test_string

我们只剩下三个结果,那些没有被过滤掉的结果!为此,我们必须选择所有三个“ex_[ace].lst”过滤器文件。

关于grep --排除-来自 : how to include multiple files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41702134/

相关文章:

linux - GREP 或 AWK : Search in the first N characters of each line, 并输出匹配模式的周围行

linux - 当从 ls | 传送结果时 head 不起作用grep

linux - 如何 grep 查找文件中的特定模式

android - 将 grep 与 python subprocess.check_output 和 adb logcat 结合使用

regex - bash 正则表达式 : Search for a maximum of 3 consecutive vowels

RegEx 用于查找单词之间只有一个空格的单词

regex - 如何 grep 查找包含多个连续破折号的字符串?

linux - Grep 内部从 ls 和 head 返回的文件

linux - 正则表达式和 grep

c - 在标准输入上使用 grep