不使用 "diff" 命令比较两个文件并以特定格式打印差异

Compare two files and print the differences in specific format not using "diff" command

你好,我有两个文件,每个文件包含 1 行数据。通常我只是使用 diff 命令来查看这两个文件之间的区别。

 file1:
    a.tag
    b.tag
    c.tag

 file2:
   a.tag
   b.tag
   d.tag

我想要一个命令,它可以告诉我文件的不同之处,还可以给我这种格式的文件名。我使用 diff 但如果只是不做我想要的..我希望输出看起来像这样..

我喜欢做的事情:比较两个文件并以这种格式只打印每个文件的不同之处:

 file1:c.tag
 file2:d.tag

你能帮忙吗?

实际上diff命令提供了相当灵活的输出选项。你可以使用这个命令:

diff 
  --unchanged-line-format='' \
  --old-line-format='file1:%L' \
  --new-line-format='file2:%L' \
  file1 file2

输出:

file1:c.tag
file2:d.tag

我对旧行和新行都使用了 %L 转义序列。 %L表示打印该行的内容。未更改的行将被跳过,因为我为此传递了一个空字符串。


要推广它并使其适用于任意文件名,您可以将其包装到 shell 函数中。例如,将其放入您的 bashrc 中:

function mydiff() {
    diff 
      --unchanged-line-format='' \
      --old-line-format=":%L" \
      --new-line-format=":%L" \
      "" ""
}

获取 bashrc 或启动一个新的 shell 并像这样调用它:

mydiff file1 file2