我有一个 bash 脚本,它将两个存档(jar 文件)扩展到两个目录中,然后对两个文件夹进行比较。我希望将差异通过管道传输到文件中,因此我在 bash 文件中执行此操作。
diff -r $originalJarExtracted $assembledJarExtracted >target/$diffList
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但它也会停止脚本,之后的任何内容都不会执行。我怎样才能让 diff 将其输出通过管道传输到文件中并使脚本继续运行。我查看了 diff 的信息和手册页,但无法使其正常工作。顺便说一句,我正在 mac 上运行脚本。
仅供参考,脚本在 github 上
假设我有 2 个配置文件,例如:文件 1:
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
virtual_gid_maps = static:5000
Run Code Online (Sandbox Code Playgroud)
文件2:
virtual_gid_maps = static:5000
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
Run Code Online (Sandbox Code Playgroud)
如果您仔细观察,您会看到一起有一行开头,virtua_gid_*但文件 1 将其放在文件末尾,而文件 2 将其放在文件头。
假设我有 2 个具有不同位置的相同行的文件,但位置对我来说并不重要,成为或不成为很重要。
我如何比较我的文件?
为什么我不能做这样的事情:
tail -n 5 small.txt | diff small.txt
Run Code Online (Sandbox Code Playgroud)
我想像第二个参数一样传递第一个命令的执行结果,而不是独立输入。我该怎么做?
我写了这样一行diff fileA.txt fileB.txt | grep -v "^[11,12d9]"。如果没有该grep部件,输出将如下所示:
1d0
< loop
11,12d9
< polo
< pool
Run Code Online (Sandbox Code Playgroud)
但是使用grep,输出将如下所示:
< loop
< polo
< pool
Run Code Online (Sandbox Code Playgroud)
我认为这grep -v有点像反向搜索。但我不明白这^[11,12d9]部分,它有什么作用?