unix-diff命令以单行每差格式输出

unix-diff命令以单行每差格式输出,unix,diff,Unix,Diff,cygwin中的diff版本有许多高级选项,允许我每行打印一个差异 给出了两个文件:one.txt和two.txt one.txt: one two three four five six 2.txt one two2 three four five5 six 并使用以下选项/参数在cygwin中运行diff: diff -y --suppress-common-lines one.txt two.txt 给出以下输出: two |two2 five |five5 这是我所追求的格

cygwin中的diff版本有许多高级选项,允许我每行打印一个差异

给出了两个文件:one.txt和two.txt

one.txt:

one
two
three
four
five
six
2.txt

one
two2
three
four
five5
six
并使用以下选项/参数在cygwin中运行diff:

diff -y --suppress-common-lines one.txt two.txt
给出以下输出:

two   |two2
five  |five5
这是我所追求的格式类型,即每行打印一个差异。 在我的dev solaris设备上,不支持“-y”选项,因此我的输出如下所示:

2c2
< two
---
> two2
5c5
< five
---
> five5
2c2
<2
---
>两个2
5c5
<5
---
>五
有人知道在这个solaris设备上每行输出一个差值的方法吗?也许可以使用sed/awk一行程序来按摩这个更原始的diff输出的输出?(请注意,我无法在此solaris设备上安装更为最新的diff版本)

谢谢

使用GNU差异

你可以建立并安装到你的本地目录,不是吗?如果您有一个主目录、一个编译器和一个make,那么您可以构建自己的gnudiff

我没有Solaris,但我无法想象它会比这多得多:

./configure --prefix=/home/bob
make
make install
不需要root权限。

使用GNU diff

你可以建立并安装到你的本地目录,不是吗?如果您有一个主目录、一个编译器和一个make,那么您可以构建自己的gnudiff

我没有Solaris,但我无法想象它会比这多得多:

./configure --prefix=/home/bob
make
make install

不需要root权限。

comm-3
几乎可以满足您的需要,但需要排序输入。它还将按字母顺序将它们放在单独的行中。您的示例(一旦排序)将显示为

five
      five5
two
      two2

如果solarisdiff不能满足您的需要,那么标准solaris盒上也没有任何东西可以这样做,这意味着从其他地方引入代码,无论是您自己的还是其他人的。由于GNU diff可以做您想要的事情,所以只需使用它。

comm-3
几乎可以做您想要的事情,但需要排序输入。它还将按字母顺序将它们放在单独的行中。您的示例(一旦排序)将显示为

five
      five5
two
      two2

如果solarisdiff不能满足您的需要,那么标准solaris盒上也没有任何东西可以这样做,这意味着从其他地方引入代码,无论是您自己的还是其他人的。由于GNU diff做了您想做的事情,只需使用它。

上面和下面给出的所有答案都是完美的,但仅仅键入一个命令并获得一个结果并不能帮助您在将来解决类似的问题

这里有一个链接解释了diff的工作原理。一旦你通过链接,你可以自己解决问题


这里有一个链接

上面和下面给出的所有答案都是完美的,但仅仅键入一个命令并获得一个结果并不能帮助您在将来解决类似的问题

这里有一个链接解释了diff的工作原理。一旦你通过链接,你可以自己解决问题

这里有一个链接

示例输出:

# ~/config_diff.sh postfix_DIST/master.cf postfix/master.cf
postfix_DIST/master.cf: -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_tls_wrappermode=yes -o smtp_fallback_relay=
postfix/master.cf: -o cleanup_service_name=cleanup_sasl -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o cleanup_service_name=cleanup_sasl -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtp_fallback_relay=

postfix_DIST/master.cf:smtp inet n - - - - smtpd smtp unix - - - - - smtp
postfix/master.cf:smtp inet n - - - - smtpd smtp unix - - - - - smtp
遗憾的是,它目前无法处理多个相同的配置变量。。。它会对它们进行计数,并认为这些文件不同。

示例输出:

# ~/config_diff.sh postfix_DIST/master.cf postfix/master.cf
postfix_DIST/master.cf: -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_tls_wrappermode=yes -o smtp_fallback_relay=
postfix/master.cf: -o cleanup_service_name=cleanup_sasl -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o cleanup_service_name=cleanup_sasl -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtp_fallback_relay=

postfix_DIST/master.cf:smtp inet n - - - - smtpd smtp unix - - - - - smtp
postfix/master.cf:smtp inet n - - - - smtpd smtp unix - - - - - smtp

遗憾的是,它目前无法处理多个相同的配置变量。。。它会计算它们,并且会认为文件不同。

谢谢安迪,听起来不错。我在solaris设备上没有可用的make,但我已经将它传递给了我的系统管理员,以便为我构建。我会看看它是如何运行的。Solaris盒子上没有开发工具吗?这很难想象。你确定你知道它应该在哪里吗?您在/usr/ucb中查找make和cc了吗?
/usr/ucb
/usr/sfw
大多数工具都安装在完整的Solaris 10上。。。(
gmake
而不是
make
等等…)谢谢安迪,听起来不错。我在solaris设备上没有可用的make,但我已经将它传递给了我的系统管理员,以便为我构建。我会看看它是如何运行的。Solaris盒子上没有开发工具吗?这很难想象。你确定你知道它应该在哪里吗?您在/usr/ucb中查找make和cc了吗?
/usr/ucb
/usr/sfw
大多数工具都安装在完整的Solaris 10上。。。(
gmake
而不是
make
,等等…)我让它使用双配置行工作。。。通过“cksum”,我让它与双配置线一起工作。。。通过“cksum”