unix khác nhau kết quả song song?


106

Làm cách nào để vẽ biểu đồ kết quả của một lệnh unix diff thay vì hết sự khác biệt này đến sự khác biệt? Xem ví dụ bên dưới:

    diff /tmp/test1  /tmp/test2
1,4c1,2
< asfdsadf
< asdfsad
< fsaf
< fdsadf
---
> asdfsafdsf
> saf
6,8d3
< sadf
< asdf
< sadf
10d4
< fasd
12,13c6,14
< sadfa
< fd
---
> sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> safa

Tôi muốn có một cái gì đó như:

diff /tmp/test1  /tmp/test2
1,4c1,2
< asfdsadf       > asdfsafdsf
< asdfsad        > saf       
< fsaf
< fdsadf
---
6,8d3
< sadf
< asdf
< sadf
10d4
< fasd
12,13c6,14
< sadfa               > sadf
< fd              > sadf
---               > sadf
              > sadf
              > sadf
              > sadf
              > sadf
              > sadf
              > safa

vimdiff cũng có thể giúp. Chúc may mắn.
shellter

Câu trả lời:


168

Từ man diff, bạn có thể sử dụng -yđể làm song song.

-y, --side-by-side
       output in two columns

Do đó, hãy nói:

diff -y /tmp/test1  /tmp/test2

Kiểm tra

$ cat a                $ cat b
hello                  hello
my name                my name
is me                  is you

Hãy so sánh chúng:

$ diff -y a b
hello                                                           hello
my name                                                         my name
is me                                                         | is you

39
Lưu ý rằng diffcó chiều rộng đầu ra tối đa được mã hóa cứng (130 cột). Thêm tùy chọn khác --width=$COLUMNSđể đặt điều này thành chiều rộng đầu cuối của bạn.
ntc2

6
Cũng cho diffs lớn chỉ đường ống vào ít như thế này for a nice scrolly / tìm kiếm khác:diff -y /tmp/test1 /tmp/test2 | less
willbradley

kiểm tra colordiff
Vladislavs Dovgalecs

5
tốt hơndiff --width=$COLUMNS --suppress-common-lines --side-by-side a b
rubo77

@ rubo77 Tùy thuộc vào cách bạn đã thiết lập mở rộng tab, bạn cũng có thể muốn mở rộng tab thành dấu cách để đầu ra xếp đúng hàng theo cột:diff --expand-tabs --width=$COLUMNS --suppress-common-lines --side-by-side a b
EdwardTeach

40

Từ trang chủ của icdiff :

nhập mô tả hình ảnh ở đây

Thiết bị đầu cuối của bạn có thể hiển thị màu, nhưng hầu hết các công cụ khác biệt không sử dụng tốt. Bằng cách đánh dấu các thay đổi, icdiff có thể cho bạn thấy sự khác biệt giữa các tệp tương tự mà không gây cản trở. Điều này đặc biệt hữu ích cho việc xác định và hiểu những thay đổi nhỏ trong các dòng hiện có.

Thay vì cố gắng trở thành một sự thay thế khác biệt trong mọi trường hợp, mục tiêu của icdiff là trở thành một công cụ mà bạn có thể tiếp cận để có được bức tranh tốt hơn về những gì đã thay đổi khi nó không rõ ràng ngay lập tức với khác biệt.

IMHO, đầu ra của nó dễ đọc hơn nhiều diff -y.


29
diff -y --suppress-common-lines file1 file2

3
đây phải là câu trả lời được chấp nhận vì chỉ -yhiển thị các dòng phổ biến cũng như không giống với diffcâu hỏi ban đầu và câu trả lời. +1.
helix

tốt hơndiff -W $COLUMNS --suppress-common-lines -y file1 file2
rubo77

13

Bạn có thể dùng:

sdiff  file1 file2

hoặc là

diff -y file1 file2

hoặc là

vimdiff file1 file2

để hiển thị cạnh nhau.


2
Tôi đã tự hỏi sự khác biệt giữa diff -ysdiff? Đầu ra của họ trông giống hệt tôi.
Hux

11

Bạn nên có sự sdiffhợp nhất song song của sự khác biệt tệp. Hãy đọc man sdifftoàn bộ câu chuyện.


2
Trên hệ thống của tôi (GNU / Linx) sdiffdường như làm điều tương tự diff -ysdifftài liệu thông tin cho biết nó không được dùng nữa: "'sdiff' without '--output' ('-o') tạo ra sự khác biệt song song. Cách sử dụng này đã lỗi thời; hãy sử dụng tùy chọn '--side-by-side' ('-y') của 'diff' để thay thế. "
ntc2

7

Bạn chỉ cần sử dụng:

diff -y fileA.txt fileB.txt | colordiff

Nó hiển thị đầu ra được chia thành hai cột và được tô màu! ( colordiff)


1
Chỉ cần thử nó trên OSX và nó không hoạt động ở đây. Có lẽ nó chỉ dành cho linux.
Nikola Petkanski

colordiff không có trên osx.
terry franguiadakis

Bạn có thể cài đặt colordiff trên OSX sử dụng Homebrew brew install colordiff Xem công thức colordiff
Jorge Fernando Matricali


6

Thử cdiff - Xem sự khác biệt có màu, tăng dần trong không gian làm việc hoặc từ stdin với hỗ trợ máy nhắn tin song song và tự động.



4

Nếu tệp của bạn có cách sử dụng khoảng trắng và tab không nhất quán, bạn có thể thấy hữu ích khi bao gồm -tđối số để mở rộng các tab:

diff -ty file1 file2

1

Lệnh khác biệt nâng cao với màu sắc, cạnh nhau và bí danh

Giả sử nội dung tệp như sau:

cat /tmp/test1.txt
1
2
3
4
5
8
9

cat /tmp/test2.txt
1
1.5
2
4
5
6
7

Bây giờ so sánh song song

diff --width=$COLUMNS --suppress-common-lines --side-by-side --color=always /tmp/test1.txt /tmp/test2.txt
                                                                              > 1.5
3                                                                             <
8                                                                             | 6
9                                                                             | 7

Bạn có thể xác định bí danh để sử dụng

alias diff='diff --width=$COLUMNS --suppress-common-lines --side-by-side --color=always'

Sau đó kết quả khác biệt mới:

diff /tmp/test1.txt /tmp/test2.txt
                                                                              > 1.5
3                                                                             <
8                                                                             | 6
9                                                                             | 7
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.