不使用 "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
你好,我有两个文件,每个文件包含 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