【问题标题】:XOR operator with grep when we grep on 2 patterns当我们对 2 个模式进行 grep 时,使用 grep 进行 XOR 运算符
【发布时间】:2026-02-08 13:05:02
【问题描述】:

我正在使用 grep 来查找具有条件 OR 的 2 个模式的匹配项,通常是这样的:

grep -E 'C_matrix|F_matrix' triplot_XC_dev_for_right_order_with_FoM.py | wc -l

我现在想排除两种模式在同一行上匹配的情况,即我想将 XOR 运算符与 grep 一起使用。

我该如何做这个操作?也许另一种技巧是可能的(我考虑将grep -v 排除在外,但如果在一个带有grep -E 的命令行中执行此操作会很好)。

【问题讨论】:

  • grep -P '^(?!.*F_matrix).*C_matrix|^(?!.*C_matrix).*F_matrix)'

标签: grep pattern-matching xor


【解决方案1】:

当你想做这种特殊情况时,最好使用awk

 $ awk '(/C_matrix/ && !/F_matrix/) || (!/C_matrix/ && !/F_matrix/)' file

使用GNU awk,可以使用位操作函数xor

$ awk 'xor(/C_matrix/,/F_matrix/)' file

【讨论】: