【发布时间】:2017-02-03 15:52:26
【问题描述】:
我想查找有 A 但没有 B 和 C 的文件列表。
grep -r -L 'B\|C' 找到没有 B 和 C 的,但是如何添加有 A 的条件呢?
【问题讨论】:
我想查找有 A 但没有 B 和 C 的文件列表。
grep -r -L 'B\|C' 找到没有 B 和 C 的,但是如何添加有 A 的条件呢?
【问题讨论】:
如果我正确理解您的问题:
grep -l "A" $(grep -r -E -L "B|C" *)
即在原始命令生成的文件列表中搜索包含“A”的文件。
【讨论】:
B 或C。
您可以通过选项-P 或--perl-regexp 使用negative lookahead in grep
grep -r -P -L '^(?!.*A).*$|B|C'
【讨论】:
B的列表
-l 选项并显示匹配字符串
A 的列表,但它不检查它是否包含B 或C
grep -r -P -L '^(?!.*lower\.html).*$|DetVehicle|customer'
如果我正确理解了您的问题,您可以这样做:
grep "A" file.txt | grep -v -e "B" -e "C"
第一个grep 查找包含A 的行,第二个grep 获取结果并删除包含“B”或“C”的行。这通过反转匹配的-v 标志起作用。
【讨论】:
grep -r -l "lower\.html" | grep -v -e "DetVehicle" -e "customer",它返回了一个包含lower 但也有Vehicle 或customer 的文件列表