suh*_*oor 6 diff text-processing file-comparison
我正在使用diff查找从当前文件到目标的差异。
我的命令是
diff -w --from-file /tmp/new_list.txt /tmp/protected_client.txt
输出是
8c8,9
> VM-E
Run Code Online (Sandbox Code Playgroud)
我使用以下方法过滤了它:
diff -w --from-file /tmp/new_list.txt /tmp/protected_client.txt | tail -n +2 | sed 's/> //g'
伟大的。现在,如果我有多个差异,我会看到:
2d1
< esxi02
3a3
> psc-dr
Run Code Online (Sandbox Code Playgroud)
两个问题。这些值是什么。我知道<的手段价值是存在的from-file,但不是在to-file和>是相反的,
第二个问题:我该如何摆脱这些代码2d1和3a3或任何出现。
jim*_*mij 11
这些代码为您提供了一个行号和一种已发现的差异类型:
a 代表添加c 改变了d 已删除例如:8c8,9装置,其在所述第一文件中的行号8( --from-file)变化为东西和这个东西被存储在线8-9在第二个文件。同样2d1意味着第一个文件的第 2 行已被删除,预计在第二个文件的第 1 行之后,依此类推。
我不认为您真的想摆脱这些代码,它们非常有用,但是如果您坚持删除它们(或更改为其他东西),那么只需使用以下六种输出格式(在这里我假设您是使用 GNU 差异):
--old-line-format--new-line-format--old-group-format--new-group-format--changed-group-format--unchanged-group-format我不会在这里介绍(相当复杂的)语法的所有细节,您可以info diff在If-then-else章节下找到它们的描述。波纹管会给你你想要的,即根本没有代码,只是纯粹的<和>:
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
Run Code Online (Sandbox Code Playgroud)
如果你愿意,你可以为它做别名。