diff so sánh file theo dòng

diff thay cho difference (sự sai khác). Lệnh này hiển thị sự sai khác của các file bằng cách so sánh theo dòng. Không giống như các lệnh tương tự như cmp và comm, nó cho thấy dòng nào của file khác với file đối chiếu.

Cú pháp:

diff [options] File1 File2 

Giả sử có 2 file tên a.txt và b.txt

$ cat a.txt
Gujarat
Uttar Pradesh
Kolkata
Bihar
Jammu and Kashmir

$ cat b.txt
Tamil Nadu
Gujarat
Andhra Pradesh
Bihar
Uttar pradesh
$ diff a.txt b.txt
0a1
> Tamil Nadu
2,3c3
< Uttar Pradesh
 Andhra Pradesh
5c5
 Uttar pradesh

Xem xét output của diff:

Dòng thứ nhất gồm thứ tự dòng trong file thứ nhất, một ký hiệu a, và thứ tự dòng trong file thứ 2.
0a1 có nghĩa là sau dòng 0 (đầu file), phải thêm (a=add) Tamil Nadu để giống dòng 1 của file 2.
Dấu < chỉ dòng trong file bên trái và > chỉ dòng ở file bên phải.

Các ký hiệu đặc biệt là

a : add
c : change
d : delete

Options

  • -I : phân biệt chữ HOA/thường
  • -c : context mode
$ cat file1.txt                                                                                                                            
cat                                                                                                                                              
mv                                                                                                                                               
comm                                                                                                                                             
cp 

$ cat file2.txt
cat                                                                                                                                              
cp                                                                                                                                               
diff                                                                                                                                             
comm
                                                                                                   
$ diff -c file1.txt file2.txt                                                                                                              
*** file1.txt   Thu Jan 11 08:52:37 2018                                                                                                         
--- file2.txt   Thu Jan 11 08:53:01 2018                                                                                                         
***************                                                                                                                                  
*** 1,4 ****                                                                                                                                     
  cat                                                                                                                                            
- mv                                                                                                                                             
- comm                                                                                                                                           
  cp                                                                                                                                             
--- 1,4 ----                                                                                                                                     
  cat                                                                                                                                            
  cp                                                                                                                                             
+ diff                                                                                                                                           
+ comm 

file1 đánh dấu bằng *** trong khi file2 đánh dấu bằng —
Từ dòng 1 đến dòng 4 của file1, giữ nguyên cat cp, cần xóa mv comm để 2 file được giống nhau
Từ dòng 1 đến dòng 4 của file2, giữ nguyên cat cp, cần thêm diff comm để 2 file được giống nhau

  • -u : unified mode
$ cat file1.txt                                                                                                                            
cat                                                                                                                                              
mv                                                                                                                                               
comm                                                                                                                                             
cp 

$ cat file2.txt                                                                                                                            
cat                                                                                                                                              
cp                                                                                                                                               
diff                                                                                                                                             
comm

$ diff -u file1.txt file2.txt                                                                                                            
--- file1.txt   2018-01-11 10:39:38.237464052 +0000                                                                                              
+++ file2.txt   2018-01-11 10:40:00.323423021 +0000                                                                                              
@@ -1,4 +1,4 @@                                                                                                                                  
 cat                                                                                                                                             
-mv                                                                                                                                              
-comm                                                                                                                                            
 cp                                                                                                                                              
+diff                                                                                                                                            
+comm

file1 được đánh dấu bằng — và file2 được đánh dấu bằng +++
Dòng @@ cho thấy từ dòng 1 đến 4 của file1 (-) và dòng 1 đến 4 của file2 (+) . Tiếp theo là các việc cần giữ nguyên, bớt, thêm trên file1 để được giống như file2.

Comments Off on diff so sánh file theo dòng

Filed under Software

Comments are closed.