2016-07-26 61 views
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。

我該如何存檔?

回答

1

下面是使用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/^.//'