导航:首页 > 程序命令 > diff命令返回

diff命令返回

发布时间:2022-12-25 21:53:41

linux diff 命令 比较两个文件不看空格, 并行打印 的命令

的确会有这个问题,但尝试了好一阵后发现,实际上也不是问题。

要解决此问题,加个选项--suppress-common-lines即可。

diff-wy--suppress-common-linesa.txtb.txt
或者:
sdiff-W--suppress-common-linesa.txtb.txt


为什么说不是问题呢?看看下图这个例子(a.txt中包含TAB和空格,b.txt里包含空格)。


得出的结论就是:

加了-y选项后,无论行内容是否相同都会打印。但注意看一下,行内容不相同的情况,两端打印时中间会有一个竖线分隔。

加了-w选项后,比较结果其实是完全相同的,不存在有竖线分隔的两端打印,从diff命令返回值(通过$?取得)也可以看出。


所以,想到用--suppress-common-lines选项抑制相同行的输出。

② Linux文件比较命令的diff命令

1>diff命令的功能
linux中diff命令的功能为逐行比较两个文本文件,列出其不同之处。它对给出的文件进行系统的检查,并显示出两个文件中所有不同的行,不要求事先对文件进行排序。
2>语法
diff
[options]
file1
file2
该命令告诉用户,为了使两个文件file1和file2一致,需要修改它们的哪些行。如果用”-”表示file1或file2,则表示标准输入。如果file1或file2是目录,那么diff将使用该目录中的同名文件进行比较。
3>[options]主要参数
-a:将所有文件当作文本文件来处理。
-b或–ignore-space-change
忽略空格造成的不同。
-b或–ignore-blank-lines
忽略空行造成的不同。
-c:使用纲要输出格式。
-h:利用试探法加速对大文件的搜索。
-i:忽略大小写的变化。
-n
–rcs:输出rcs格式。
-n或–new-file
在比较目录时,若文件a仅出现在某个目录中,会显示:only
in目录;文件a若使用-n参数,则diff会将文件a与一个空白的文件比较。
-r或–recursive
比较子目录中的文件。
-u,-u<列数>或–unified=<列数>
以合并的方式来显示文件内容的不同。
4>使用方法的实例说明
例如:
diff
/usr/xu
mine
把目录/usr/xu
中名为mine的文件与当前目录中的mine文件进行比较。
通常输出由下述形式的行组成:
n1
a
n3,n4
n1,n2
d
n3
n1,n2
c
n3,n4
这些行类似ed命令把filel转换成file2。字母(a、d和c)之前的行号(n1,n2)是针对file1的,其后面的行号(n3,n4)是针对file2的。字母a、d和c分别表示附加、删除和修改操作。
在上述形式的每一行的后面跟随受到影响的若干行,以”<”打头的行属于第一个文件,以”>”打头的行属于第二个文件。
diff能区别块和字符设备文件以及fifo(管道文件),不会把它们与普通文件进行比较。
如果file1和file2都是目录,则diff会产生很多信息。
5>diff最常用的功能
diff有很多功能平时我们不常用到,最常用的功能莫过于生成patch文件了:
diff
-urn
old/
new/
>
mysoft.patch
参数
-u
表示使用
unified
格式,-r
表示比较目录,-n
表示将不存在的文件当作空文件处理,这样新添加的文件也会出现在patch文件中。
然后在需要应用patch的地方使用下述命令即可:
patch
-p0
<
mysoft.patch
diff的
-y
命令(长格式为
–side-by-side)可以将屏幕分成左右两部分,来比较两个文件之间的差异。许多图形化的比较工具都有这个功能,但如果只能使用命令行,这个参数就相当有用了。如果要改变左右各部分的宽度,可以通过
-w
(–width)参数来指定。
–ignore-blank-lines
参数可以不检查空白行。这样dos格式和unix格式的文件互相比较时,就不至于因为换行符不一致而出现大量的差异。

③ Linux 基础教程 11-基本命令diff和comm

diff命令主要用来比较文件的差异。diff会以逐行的方式比较文本文件的差异,如果指定比较的是目录,则diff会比较目录中相同文件名的文件,但不会比较其子目录。

主要参数如下所示:

second.txt

comm命令主要用于比较两个 已经排过序 的文件。

主要参数如下所示:

comm在对比文件前 一定要先排序 ,否则会出现报错提示,以上面diff示例的中的first.txt和second.txt为例

④ shell 命令 diff 的使用简介

diff 命令是 Linux 上比较重要的命令行工具,用于比较文本内容,并找到不相同的地方, diff 在命令行中打印每一行的改动之处。 diff 程序的输出被称为补丁( patch ),在 Linux 系统中还有一个 patch 程序,可以根据 diff 的输出,将文件内容更新为另一个文件内容, diff 是版本控制工具不可或缺的一部分。

diff 命令能比较单个文件或者目录内容。

如果指定比较的是文件,则只有当输入为文本文件时才有效。以逐行的方式,比较文本文件的异同处。

如果指定比较的是目录的的时候, diff 命令会比较两个目录下名字相同的文本文件。列出不同的二进制文件、公共子目录和只在一个目录出现的文件。

diff 的 normal 显示格式有三种提示:

上面的 “3c3” 和 “8c8” 表示 log2014.log 和 log20143.log 文件在 3 行和第 8 行内容有所不同; "11,12d10" 表示第一个文件比第二个文件多了第 11 和 12 行。

“|”表示前后 2 个文件内容有不同

“<”表示后面文件比前面文件少了 1 行内容

“>”表示后面文件比前面文件多了 1 行内容

这种方式在开头两行作了比较文件的说明,这里有三中特殊字符:

“+” 比较的文件的后者比前着多一行

“-” 比较的文件的后者比前着少一行

“!” 比较的文件两者有差别的行

它的第一部分,也是文件的基本信息:

--- log2014.log 2012-12-07 18:01:54.000000000 +0800

+++ log2013.log 2012-12-07 16:36:26.000000000 +0800

"---"表示变动前的文件,"+++"表示变动后的文件。

第二部分,变动的位置用两个@作为起首和结束。

@@ -1,12 +1,10 @@

前面的 "-1,12" 分成三个部分:减号表示第一个文件(即 log2014.log ),"1"表示第 1 行,"12"表示连续 12 行。合在一起,就表示下面是第一个文件从第 1 行开始的连续 12 行。同样的, "+1,10" 表示变动后,成为第二个文件从第 1 行开始的连续 10 行。

⑤ shell中diff命令的返回值我怎么才能获取

1.$?可以获取到diff的返回值
2.之所以打印不出echo different大致有两个原因
case 1:两个目录内容不一样,无法进入循环
case 2:仔细检查语法错误,是否遗漏空格

⑥ 收藏 急!shell中diff命令的返回值我怎么才能获取到呢

将if [ $? -ne 0 ] ;改为if [ $? -eq 0 ] ; 你再试试。
在linux中上一条命令执行成功时$?的值为0

⑦ Linux sed 下面这行代码谁能解释下

执行sed -i.bak "$1" $2
-i代表直接在源文件修改,但是源文件备份为.bak
$1是处理程序变量
$2是文件名变量
————————————
执行diff $2 ${2}.bak > /dev/null 2>&1
diff $2 ${2}.bak就是对比源文件和备份的文件,$2是源文件(修改过的),${2}.bak就是未修改的备份的文件。
> /dev/null代表把diff的输出重定向到null,不会在终端显示。
2>&1代表把diff的错误重定向到输出,也会到null,不在终端显示。
————————————
$?代表上一句命令,也就是diff命令的返回值。如果是0,说明修改后的源文件和以前的文件相同,根本没有改变,就输出sed失败。不是0说明不同,输出sed成功。

⑧ Ubuntu下怎么查diff的返回值

听说ubuntu是可以查看源代码的,是最底层的那种!也就是用C或C++写的那...
答:下面以查看ls这个命令的源代码为例: 1.输入 which ls liuwei@liuwei:~/test$ which ls /bin/ls 2.输入sudo dpkg -S /bin/ls liuwei@liuwei:~/test$ sudo dpkg -S /bin/ls coreutils: /bin/ls 3.输入sudo apt-get source coreutilsliuwei@liuwei...

⑨ 计算机编程中的diff是什么意思

diff 命令比较文本文件。它能比较单个文件或者目录内容。
注:
diff 命令只有当输入为文本文件时才有效。
如果指定了 Directory1 和 Directory2 参数,diff 命令比较两个目录下名字相同的文本文件。列出不同的二进制文件、公共子目录和只在一个目录出现的文件。 当 diff 命令运行于常规文件时,且当目录比较期间比较不同的文本文件时,diff 命令显示文件中哪些行必须更改以保持它们一致。如果 File1 和 File2 参数都不是目录,其中之一可能给定负号“-”,以采用标准输入。如果 File1 参数是目录,则使用目录中与 File2 参数指定的文件名一致的那个文件。

⑩ shell怎么判断两个文件内容是否相同

#cat diff_two_file
#/bin/sbin
file1=/mnt/mmc/test/aa
file2=/mnt/mmc/test/bb
diff $file1 $file2 > /dev/null
if [ $0 == 0 ]; then
echo "Both file are same"
else
echo "Both file are different"
fi

$0 是上一执行命令的返回值。
diff 命令返回值为 0,说明两个文件相同, 否则两个文件不相同。

阅读全文

与diff命令返回相关的资料

热点内容
dvd光盘存储汉子算法 浏览:758
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:672
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:486
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:383
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:350
风翼app为什么进不去了 浏览:779
im4java压缩图片 浏览:362
数据查询网站源码 浏览:151
伊克塞尔文档怎么进行加密 浏览:893
app转账是什么 浏览:163