嗨我有两个文件,每个文件包含1行数据。通常我只是使用diff命令来查看这两个文件之间的区别。
file1:
a.tag
b.tag
c.tag
file2:
a.tag
b.tag
d.tag
我想要一个命令,它只是向我显示文件的不同之处,并且还提供了此格式的文件名。我使用差异,但如果只是不做我想要的..我希望外观看起来像这样..
我喜欢做什么:比较这两个文件,并以这种格式打印每个文件中不同的文件:
file1:c.tag
file2:d.tag
你能帮帮忙吗?
答案 0 :(得分:3)
实际上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="$1:%L" \
--new-line-format="$2:%L" \
"$1" "$2"
}
获取bashrc或启动一个新的shell并按如下方式调用它:
mydiff file1 file2