gpt4 book ai didi

linux - 如何在使用 linux diff 进行比较时添加新的空行来代替已删除的行

转载 作者:太空宇宙 更新时间:2023-11-04 10:33:38 26 4
gpt4 key购买 nike

我有两个文件 a.txt 和 b.txt

a.txt内容

a
b
c

b.txt内容

a
c
d

我需要包含以下内容的文件c.txt:

a

c
d

文件 b.txt 没有 b 行,但有额外的 d 行。文件 c.txt 在缺少 b 的地方有空行,并且有新行 d。

我怎样才能做到这一点?

最佳答案

这里使用 sed 修改 diff -u 的输出:

$ diff -u a.txt b.txt
--- a.txt 2016-07-26 18:27:59.000000000 +0200
+++ b.txt 2016-07-26 18:28:05.000000000 +0200
@@ -1,3 +1,3 @@
a
-b
c
+d

我们想删除该输出的前三行,然后用空行替换以 - 开头的每一行。最后,我们需要从剩余的每一行中删除第一个字符:

$ diff -u a.txt b.txt | sed  -e '1,3d' -e 's/^-.*$//' -e 's/^.//'
a

c
d

如果 diff 在不同的行之间发现太多相似的行,这可能会失败,在这种情况下,它将打印一个新的 @@ 行。我们可以通过使用 -U 请求更多行统一上下文来解决这个问题:

$ diff -u -U 100 a.txt b.txt | sed  -e '1,3d' -e 's/^-.*$//' -e 's/^.//'

关于linux - 如何在使用 linux diff 进行比较时添加新的空行来代替已删除的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38595208/

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