diff - số dòng đầu ra


25

Tôi muốn sử dụng công cụ cli để so sánh tệp và cần số dòng trước dòng đầu ra để giúp tôi có thể chuyển sang chênh lệch dòng, vì tôi sử dụng công cụ hiểu nơi cần nhảy, nếu dòng bắt đầu như thế này :line-number: regular line contents

Vì vậy, tôi đã cố gắng diffvà đọc tài liệu có vẻ như có thể:

  -D, --ifdef=NAME                output merged file with `#ifdef NAME' diffs
      --GTYPE-group-format=GFMT   format GTYPE input groups with GFMT
      --line-format=LFMT          format all input lines with LFMT
      --LTYPE-line-format=LFMT    format LTYPE input lines with LFMT
    These format options provide fine-grained control over the output
      of diff, generalizing -D/--ifdef.
    LTYPE is `old', `new', or `unchanged'.  GTYPE is LTYPE or `changed'.
    GFMT (only) may contain:
      %<  lines from FILE1
      %>  lines from FILE2
      %=  lines common to FILE1 and FILE2
      %[-][WIDTH][.[PREC]]{doxX}LETTER  printf-style spec for LETTER
        LETTERs are as follows for new group, lower case for old group:
          F  first line number
          L  last line number
          N  number of lines = L-F+1
          E  F-1
          M  L+1
      %(A=B?T:E)  if A equals B then T else E
    LFMT (only) may contain:
      %L  contents of line
      %l  contents of line, excluding any trailing newline
      %[-][WIDTH][.[PREC]]{doxX}n  printf-style spec for input line number
    Both GFMT and LFMT may contain:
      %%  %
      %c'C'  the single character C
      %c'\OOO'  the character with octal code OOO
      C    the character C (other characters represent themselves)

nhưng không có ví dụ hoặc giải thích về việc chuyển đổi phức tạp này.

Có thể có được đầu ra như vậy từ diff? Nếu vậy thì thế nào?

Câu trả lời:


45

Vâng, nó là có thể. Khi sử dụng các tùy chọn này, mặc định chỉ là in ra mỗi dòng. Điều này rất dài dòng, và không phải những gì bạn muốn.

diff --unchanged-line-format=""

sẽ loại bỏ các dòng không thay đổi, vì vậy bây giờ chỉ có các dòng cũ và mới được sản xuất.

diff --unchanged-line-format="" --new-line-format=":%dn: %L"

bây giờ sẽ hiển thị các dòng mới có tiền tố :<linenumber>:và khoảng trắng, nhưng vẫn in các dòng cũ. Giả sử bạn muốn loại bỏ chúng,

diff --unchanged-line-format="" --old-line-format="" --new-line-format=":%dn: %L"

Nếu bạn muốn các dòng cũ hơn là những dòng mới được in, trao đổi chúng xung quanh.


Tuyệt vời! Cảm ơn :) Tôi đã cố gắng đoán từ danh sách trợ giúp, nhưng không thành công và nghĩ rằng tôi đã đọc sai nó. Sau đó, tôi đã thực hiện những gì tôi muốn với Python ( difflibmô-đun với các tệp được lập chỉ mục trên mỗi dòng trong đối tượng danh sách) mà tôi không thể sử dụng diff <(pipe buffer1) <(pipe buffer2)với Python, như tôi đã lên kế hoạch diff. Bây giờ bạn đã cứu tôi :)
zetah

nó không hoạt động nếu bạn sử dụng * và có các thư mục.
Herman Toothrot
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.