Diff
使用切換行區分兩個文件的結果說兩次失去同一行
我試圖理解兩個文件上的 linux diff 命令,它們的行只是彼此的排列,但無法理解它生成的輸出。考慮以下三個命令:
[myPrompt]$ cat file1 apples oranges [myPrompt]$ cat file2 oranges apples [myPrompt]$ diff file1 file2 1d0 < apples 2a2 > apples
有人可以解釋一下 diff 的上述神秘輸出嗎?
- 為什麼輸出中根本沒有提到“橙子”?
- 是什麼
1d0
意思2a2
?我從這個答案中了解到:
“<”表示file2中缺少該行,“>”表示file1中缺少該行
但這並不能解釋為什麼輸出中缺少橙子。
要理解報告,請記住這
diff
是規定性的,描述需要對第一個文件 (file1
) 進行哪些更改以使其與第二個文件 (file2
) 相同。具體來說,
d
in1d0
表示刪除,a
in2a2
表示添加。因此:
1d0
表示必須刪除file1
(apples
) 中的第 1 行。0
in表示如果它們沒有被刪除1d0
,第 0 行是它們將出現在第二個文件 ( ) 中的位置。file2
這意味著當更改file2
為file1
(向後)file1
在第 0 行之後追加第 1 行時file2
。2a2``oranges
表示將第二行 ( )附加file2
到現在的第二行file1
(刪除中的第一行後file1
,oranges
切換到第 1 行)