我用来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
,反之亦然>
,
第二个问题:我如何摆脱这些代码2d1
和3a3
/或出现的任何情况。
答案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
如果需要,您可以为其创建别名。