“diff”中的这些代码是什么意思以及如何摆脱它们?

“diff”中的这些代码是什么意思以及如何摆脱它们?

我用来diff查找当前文件与目标之间的差异。

我的命令是 diff -w --from-file /tmp/new_list.txt /tmp/protected_client.txt

输出是

8c8,9
> VM-E

我使用以下方法过滤了这个: diff -w --from-file /tmp/new_list.txt /tmp/protected_client.txt | tail -n +2 | sed 's/> //g'

伟大的。现在,如果我有多个差异,我会看到:

2d1
< esxi02
3a3
> psc-dr

两个问题。这些值是什么。我知道<意味着价值存在from-file但不存在to-file,反之亦然>

第二个问题:我如何摆脱这些代码2d13a3/或出现的任何情况。

答案1

这些代码为您提供了行号和已发现的差异类型:

  • a代表添加的
  • c改变了
  • d已删除

例如:8c8,9表示第一个文件 ( ) 中的第 8 行--from-file已更改为某物和这个某物存储在第二个文件的第 8-9 行。同样2d1意味着第一个文件中的第 2 行已被删除,预计在第二个文件中的第 1 行之后,等等。

我不认为你真的想删除这些代码,它们非常有用,但是如果你坚持删除它们(或更改为其他内容),那么只需使用以下六种输出格式(这里我假设你是使用 GNU diff):

  • --old-line-format
  • --new-line-format
  • --old-group-format
  • --new-group-format
  • --changed-group-format
  • --unchanged-group-format

我不会在这里介绍(相当复杂)语法的所有细节,您可以在下面找到它们的info diff描述如果-那么-否则章节。下面的代码将准确地给出您所要求的内容,即根本没有代码,只有纯粹的<>

diff --old-line-format=$'< %l\n' --new-line-format=$'> %l\n' \
     --old-group-format=$'%<' --new-group-format=$'%>' \
     --changed-group-format=$'%>' --unchanged-group-format='' file1 file2

如果需要,您可以为其创建别名。

相关内容