gpt4 book ai didi

awk - 比较两个文件并以特定格式打印差异,不使用 "diff"命令

转载 作者:行者123 更新时间:2023-12-02 20:44:30 31 4
gpt4 key购买 nike

嗨,我有两个文件,每个文件各包含 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="$1:%L" \
--new-line-format="$2:%L" \
"$1" "$2"
}

获取 bashrc 或启动一个新 shell 并像这样调用它:

mydiff file1 file2

关于awk - 比较两个文件并以特定格式打印差异,不使用 "diff"命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34052902/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com