Unix csh one liner用于比较2个压缩文本文件
我试图使用zcat和diff比较2.gz文本文件。这是在JunOS框上,因此添加新的二进制文件(zdiff)不是一个选项,只有有限数量的其他shell可用。这可能是真的,这些东西可以添加,但管理政策禁止这一点。csh是默认的shell,但是tcsh,也可以使用sh。我希望能够将挂起的提交文件(juniper.conf+.gz)与/config目录中的当前配置文件(juniper.conf.gz)进行比较 我读过类似这样的东西Unix csh one liner用于比较2个压缩文本文件,unix,csh,Unix,Csh,我试图使用zcat和diff比较2.gz文本文件。这是在JunOS框上,因此添加新的二进制文件(zdiff)不是一个选项,只有有限数量的其他shell可用。这可能是真的,这些东西可以添加,但管理政策禁止这一点。csh是默认的shell,但是tcsh,也可以使用sh。我希望能够将挂起的提交文件(juniper.conf+.gz)与/config目录中的当前配置文件(juniper.conf.gz)进行比较 我读过类似这样的东西 diff <(zcat juniper.conf+.gz) &l
diff <(zcat juniper.conf+.gz) <(zcat juniper.conf.gz)
diff建议的命令中的大多数功能都特定于bash,或者至少是sh
如果sh
确实是Bourne shell,而不是许多系统上的bash
或ksh
的符号链接,那么您不能使用之类的东西感谢您的回复。你的第一个建议真的很充分。我试图找到更复杂的东西,但实际上,将它们作为单独的命令放在一行上是完全可以接受的(感觉就像一步)。你只需要重新调整我的脑袋。第二个建议不起作用。没有/dev/fd/3文件(显然,我肯定不是shell脚本编写者);我发现一篇文章讨论了/dev/fd,但没有讨论TLDR。最后,安装/构建bash的建议非常好,但遗憾的是,在我们的生产网络上没有。再次感谢!
zcat juniper.conf+.gz | { zcat juniper.conf.gz | diff /dev/fd/3 - ; } 3<&0
zcat juniper.conf+.gz > 0 ; zcat juniper.conf.gz > 1 ; diff 0 1 ; rm 0 1
zcat juniper.conf+.gz | { zcat juniper.conf.gz | diff /dev/fd/3 - ; } 3<&0
sh -c 'zcat juniper.conf+.gz | { zcat juniper.conf.gz | diff /dev/fd/3 - ; } 3<&0'
wget ftp://ftp.gnu.org/gnu/bash/bash-4.2.tar.gz && ...