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/^.//'