标签: diff

如何颜色差异输出?

我想有条件地格式化 Unix 文件,我目前正在处理diff命令,想知道是否可以格式化diff命令输出的文本。

例子:

匹配的值应显示为绿色。
不匹配的值应显示为红色。

假设我有两个文件file1file2我的命令diff file1 file2

现在我希望假设输出包含 5 个不匹配,那么这些不匹配应该以红色显示。如何使用unix实现这一目标?

简而言之,“对于不匹配的值,将 diff 命令的输出颜色更改为红色”

colors bash ksh diff

47
推荐指数
5
解决办法
5万
查看次数

使差异在并排模式下使用完整的终端宽度

大多数应用程序很聪明地使用它们可用的终端的整个宽度。我的 shell 可以,screen、vim 等。但是,diff在并排模式 ( -y) 中不可以。这让我很生气。它使用 126 个字符的宽度,这甚至不是我的 270 块宽度终端的一半。

查看手册页并没有发现任何关于自动调整宽度的特别之处,只是通过手动指定它-W

是否有“隐藏功能”diff允许它自动扩展到终端的整个宽度?或者; -W <terminalsize>每当我运行它时自动插入到我的 diff 命令中的最简单路径是什么?

我假设自动将 -W 附加到所有内容不会伤害任何东西,因为它只会意味着“使用 $x 列”,这始终是我想要的,无论我是否处于并排模式,否则。

terminal diff

45
推荐指数
1
解决办法
2万
查看次数

diff 报告两个文件不同,尽管它们是相同的!

我有两个看起来与我相同的文件(包括尾随空格和换行符),但 diff 仍然表示它们不同。即使我进行diff -y并排比较,线条看起来也完全相同。diff 的输出是整个 2 个文件。

知道是什么原因造成的吗?

diff

43
推荐指数
4
解决办法
6万
查看次数

如何将彩色差异输出减少到更少?

我一直在使用 git diff,它会产生彩色输出。但是,我现在发现我需要对某些东西使用普通的差异,并且由于缺少颜色,它产生了大量难以阅读的输出。如何让 diff 产生可读的彩色输出?理想情况下,同时将其管道化,以便轻松查看大文件。

less colors diff

42
推荐指数
3
解决办法
1万
查看次数

区分两个大文本文件

我有两个大文件(每个 6GB)。它们是未排序的,以换行符 ( \n) 作为分隔符。我该如何区分它们?应该不到 24 小时。

performance diff large-files

41
推荐指数
2
解决办法
5万
查看次数

比较目录但不比较文件内容

diff -r
Run Code Online (Sandbox Code Playgroud)

我可以做这个任务,但是它需要很长时间,因为diff检查文件的内容。

我想要一些东西来确定两个文件在大小、上次修改等方面是相同的。但是没有一点一点地检查文件(例如一个视频需要很长时间)。

有没有其他办法?

diff file-comparison

35
推荐指数
2
解决办法
2万
查看次数

如何修复“Hunk #1 FAILED at 1(不同的行尾)”消息?

我正在尝试使用命令创建补丁

git diff sourcefile >/var/lib/laymab/overlay/category/ebuild/files/thepatch.patch
Run Code Online (Sandbox Code Playgroud)

当我应用补丁时,它给了我

$ patch -v
GNU patch 2.7.5

$ /usr/bin/patch -p1 </var/lib/laymab/overlay/category/ebuild/files/thepatch.patch
patching file sourcefile
Hunk #1 FAILED at 1 (different line endings).
Hunk #2 FAILED at 23 (different line endings).
Hunk #3 FAILED at 47 (different line endings).
Hunk #4 FAILED at 65 (different line endings).
Hunk #5 FAILED at 361 (different line endings).
5 out of 5 hunks FAILED -- saving rejects to file sourcefile.rej
Run Code Online (Sandbox Code Playgroud)

我试图将 dos2unix 应用于 src 文件和补丁文件,但消息没有消失......

UPD:--ignore-whitespace 也无济于事

PATCH COMMAND: …
Run Code Online (Sandbox Code Playgroud)

diff patch git newlines

34
推荐指数
2
解决办法
5万
查看次数

Diff,仅显示来自右侧文件的修改行

我有文件ab并且我想输出b更改后的行,因为它是从a. 只是修改后的行,没有周围的上下文,没有差异偏移标记。

我如何使用 shell 脚本来做到这一点?(没有 Python/Perl/PHP/...)

sed 和 awk 是可接受的解决方案。

现在,我正在做的是 diff -y 与 --suppress-common-lines 和 sed 使用正则表达式反向引用来获取空格后的正确部分。一定会有更好的办法?

使用 perl(这是被禁止的),我会做这样的事情:

diff -y --suppress-common-lines -W $COLUMNS Eclipse_Preferences_Export_*.epf | perl -pe 's/.*\t|\t(.*)$/\1/g'
Run Code Online (Sandbox Code Playgroud)

diff sed awk shell-script

32
推荐指数
2
解决办法
3万
查看次数

如何区分两个命令的输出?

如何使用该diff命令来比较 2 个命令的输出?

这样的东西存在吗?

diff  ($cat /etc/passwd) ($cut -f2/etc/passwd)
Run Code Online (Sandbox Code Playgroud)

shell bash diff command-substitution

31
推荐指数
2
解决办法
3万
查看次数

您会推荐哪种具有向左/向右复制功能的 GUI 差异查看器?

除了Meld之外,我几乎没有使用过任何东西。你能推荐其他东西吗?

如果您给出推荐理由(作为评论),那就更好了。

[注意] 我想要一个替代方案,因为 Meld 最近失去了将整个内容从一个文件复制到另一个文件的功能。我指的是通过Copy To Left/Right右键单击菜单项提供的功能。

[更新] 刚查了一下,问题是1.3.2引入的。1.3.1运行良好,我检查过的最新版本是1.4.0,它不起作用。

software-rec gui diff

30
推荐指数
3
解决办法
3万
查看次数