0
compering时,如何到位删除一个的添加新的空行,我有两个文件a.txt中和b.txt使用Linux差异
A.TXT内容
a
b
c
湾TXT内容
a
c
d
我需要提交c.txt有以下内容:
a
c
d
文件b.txt没有b行,但有多余的d行。 文件c.txt有空行来代替丢失的b并且有新的行d。
我该如何存档?
compering时,如何到位删除一个的添加新的空行,我有两个文件a.txt中和b.txt使用Linux差异
A.TXT内容
a
b
c
湾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/^.//'