
我有一個只有一行的文件。其大小約為20,000位元組。
該文件已被修改,我想知道在哪裡。
我想使用 diff,但它顯示了完整的行,因為它輸出有差異的行 - 但在這種情況下,它是文件中唯一有差異的行。
所以我想看看有什麼區別。
有什麼建議嗎?
答案1
假設有很多空格,就像在普通文字中一樣,您可以按單字拆分文件,然後用普通的 diff 工具進行比較,例如 meld:
tr -s ' ' '\n' < file1.txt > file1.txt.split
tr -s ' ' '\n' < file2.txt > file2.txt.split
meld file1.txt.split file2.txt.split
答案2
答案3
如果這是一個一次性問題,我會建立文件的副本,\n
每 50 個字符插入一個字符,然後比較這些副本。 (我選擇 50 是因為它使數學從原始文件中的不同行號到位元組偏移變得容易,但可能會根據我的發現向上/向下調整。)
答案4
我發現git diff
該--word-diff=porcelain
選項對此類任務很有幫助,例如,給定 2 個包含長行且僅相差 1 個字元的文件,可以透過管道傳輸輸出以grep
過濾更改的行和更改,然後grep
再次通過管道僅顯示最後80 個字元每行字元:
echo {1..4000} A {4001..8000} > a.tmp
echo {1..4000} B {4001..8000} > b.tmp
> git diff -U0 --word-diff=porcelain a.tmp b.tmp | grep -A3 '@@' | egrep -o '.{1,80}$'
@@ -1 +1 @@
3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000
-A
+B