regex - 忽略 diff 命令中带有反斜杠的模式

标签 regex bash shell diff backslash

文件 foo.c:

do {                                                            
    a=b;
    c=d;
 } while (0)

文件bar.c

do {                                                            
    a=b;
    c=d;
\
} while (0)

在 shell 脚本中,上述 2 个文件的差异:

diff foo.c bar.c

<   } while (0)
---
>     \
>   } while (0)

我试图使用

忽略此差异

diff -I "reg-ex pattern".

我尝试了像 "\s}\swhile\s(0)""} while (0)" 等模式,但没有用。是否可以忽略上述情况?如果不是“diff”,还有其他实用程序吗?

最佳答案

您可以通过使用 sed 删除不需要的行来做到这一点。然后忽略差异。

foo.c 和 bar.c 之间有 2 个差异

  1. \
  2. foo.c 中 } 之前有一个空格

你可以这样做:

diff -I '\s\?}' <(sed '/^\\/d' bar.c) foo.c

使用 sed 删除 \ 行并忽略 foo.c 中的空格

关于regex - 忽略 diff 命令中带有反斜杠的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41218772/

相关文章:

Bash参数数组操作问题

bash - Slurm 作业,知道它在哪个节点上

linux - 如何通过 linux shell 检查 url 是否正常工作

linux - 如何正确打印作为参数传递给 Bash 函数的字符串?

java - 正则表达式:索引附近未封闭的字符类

javascript - 正则表达式检测奇数个连续引号

Bash脚本根据文件大小更改 move 文件夹?

bash - 在 bash shell 中打印星号 ("*")

python - 使用 RE 查找仅包含拉丁字母、数字和下划线且不能以数字开头的字符串

regex - 解析日志文件,检查日期,报告结果