标签: diff

diff 报告同一行与 2 个文件中的不同

我有 2 个包含歌曲列表的文件。hdsongs.txt 和 sdsongs.txt

我编写了一个简单的脚本来列出所有歌曲并输出到文本文件,然后对其运行差异。它在大多数情况下都可以正常工作,但脚本中的实际 diff 命令将同一行显示为不同。这实际上发生在多条线路上,但不是全部。

以下是两个文件中歌曲的示例:

$ grep Apologize \*songs\*
hdsongs.txt:Timbaland/Apologize.mp3
sdsongs.txt:Timbaland/Apologize.mp3
Run Code Online (Sandbox Code Playgroud)

没有我可以看到的尾随特殊字符:

$ cat -A hdsongs.txt sdsongs.txt | grep Apologize
Timbaland/Apologize.mp3$
Timbaland/Apologize.mp3$
Run Code Online (Sandbox Code Playgroud)

当我运行 diff 时,它显示每个文件中的同一行;但线条不一样吗?

$ diff hdsongs.txt sdsongs.txt | grep Apologize
> Timbaland/Apologize.mp3
< Timbaland/Apologize.mp3
Run Code Online (Sandbox Code Playgroud)

这类似于这里的线程: diff 报告两个文件不同,尽管它们是相同的!

但这是针对文件中的行,而不是整个文件,并且那里的分辨率似乎不适合这种情况。

$ diff <(cat -A phonesongsonly.txt) <(cat -A passportsongsonly.txt) | grep Apologize
< Timbaland/Apologize.mp3$
> Timbaland/Apologize.mp3$

$ wdiff -w "$(tput bold;tput setaf 1)" -x "$(tput sgr0)" -y "$(tput bold;tput setaf 2)" -z "$(tput sgr0)" hdsongs.txt sdsongs.txt | …
Run Code Online (Sandbox Code Playgroud)

diff

14
推荐指数
1
解决办法
2452
查看次数

如何“合并”两个文本文件?

我最近从 Ubuntu 12.04 升级到 12.10,有一次,它在apache2.conf. 那时我没有给我合并选项,所以我拒绝了新文件,安装程序将新文件另存为apache2.conf.dpkg-dist.

我可以比较这两个文件,diff apache2.conf apache2.conf.dpkg-dist并只得到不同的行。但是我想手动合并这两种,就像我如何解决 SVN 或 git 中的合并冲突一样。我怎样才能做到这一点?

linux ubuntu diff etc merge

13
推荐指数
1
解决办法
9636
查看次数

如何知道一个文本文件是否是另一个的子集

我试图找到一种方法来确定一个文本文件是否是另一个文件的子集。

例如:

foo
bar
Run Code Online (Sandbox Code Playgroud)

是一个子集

foo
bar
pluto
Run Code Online (Sandbox Code Playgroud)

尽管:

foo
pluto
Run Code Online (Sandbox Code Playgroud)

foo
bar
Run Code Online (Sandbox Code Playgroud)

不是彼此的子集...

有没有办法用命令来做到这一点?

此检查必须是交叉检查,并且必须返回:

file1 subset of file2 :    True
file2 subset of file1 :    True
otherwise             :    False
Run Code Online (Sandbox Code Playgroud)

diff files file-comparison text vimdiff

13
推荐指数
1
解决办法
7178
查看次数

比较两个 zip 文件的差异

diff 命令比较以查看两个文件之间的任何差异。是否可以使用相同的方法比较两个压缩文件,即压缩文件中的单个文件中的数据是否有任何差异,例如计数等?

diff

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

如何在unix中逐行比较两个不同的文件?

文件1:

123
234
345
456
Run Code Online (Sandbox Code Playgroud)

文件2:

123
234
343
758
Run Code Online (Sandbox Code Playgroud)

预期输出:文件 3:

TRUE
TRUE
FALSE
FALSE
Run Code Online (Sandbox Code Playgroud)

所以代码应该比较两个文件,如果匹配则打印“TRUE”,否则它应该在新文件中打印“FALSE”。任何人都可以为此提供解决方案吗?

diff awk text-processing

13
推荐指数
4
解决办法
4406
查看次数

比较bash中两个文件的头部

我可以diff filea fileb看看文件之间的区别。我也head -1 filea可以查看filea 或fileb 的第一行。如何组合这些命令来显示 filea 的第一行和 fileb 的第一行之间的区别?

shell bash diff head

12
推荐指数
2
解决办法
3640
查看次数

Diff 文件头

我有两个文件。我怀疑一个文件是另一个文件的子集。有没有办法区分文件以(以简洁的方式)识别第二个文件在第一个文件中的位置?

diff

11
推荐指数
2
解决办法
733
查看次数

cmp 比 diff -q 快吗?

在最近关于检查某些文件是否具有不同内容的 Ask Ubuntu 问题中,我看到一条评论指出,如果不同的部分无关紧要,cmp将比diff. 这个堆栈溢出答案同意,给出了cmp将在第一个不同字节处停止的原因。但是,GNUdiff-q(or --brief) 标志,它应该使它report only when files differ. diff一旦发现任何差异,GNU也将停止比较似乎是合乎逻辑的(例如grep在指定-l或时在第一个匹配之后停止搜索-q)。

cmp真正的速度比diff -q,在Linux系统的背景下,这可能有GNU版本?

performance diff

11
推荐指数
2
解决办法
8852
查看次数

识别文件中的重复文本块

是否有一种方便的方法来识别文件中重复或接近重复的文本块?

我想用它来识别代码重复。看起来有具有此功能的专业程序,但我不打算参与其中。

我希望有一个类似于 diff 的工具可以做一种“文件内”差异。更好的是在单个文件中使用 vimdiff。

diff text-processing vimdiff

11
推荐指数
1
解决办法
4176
查看次数

grep 在 git diff 中,但显示文件和行号

当我在分支上工作时,我想快速跳转到我的“TODO”评论。这意味着

  1. 我只想要添加到我的分支上的“TODO”注释(忽略 master 中的注释)
  2. 我希望每个匹配项都显示文件和行号。

我知道两个部分解决方案:git grep TODO具有正确的格式(将 grep.lineNumber 设置为 true),但结果太多。 git diff master... | grep TODO是一组很好的结果,但不显示文件和行号。

是否有一个选项可以告诉git diff每个更改的行添加文件名和行号前缀?(--line-prefix看起来很有希望,但似乎只需要一个固定的字符串。)

我可以通过--new-line-format=":%dn: %L"diff - 输出行号)吗git diff


例如,目前我的搜索结果如下所示:

$ git diff master... | grep TODO
+    // TODO use a non-fatal assertion
+        // TODO use a non-fatal assertion
+// TODO make this conditional too
Run Code Online (Sandbox Code Playgroud)

但理想情况下我想要这样:

src/foo/abc.cpp:221:+    // TODO use a non-fatal assertion
src/foo/xyz.cpp:934:+        // TODO use a non-fatal assertion …
Run Code Online (Sandbox Code Playgroud)

diff git

10
推荐指数
1
解决办法
3421
查看次数

标签 统计

diff ×10

text-processing ×2

vimdiff ×2

awk ×1

bash ×1

etc ×1

file-comparison ×1

files ×1

git ×1

head ×1

linux ×1

merge ×1

performance ×1

shell ×1

text ×1

ubuntu ×1