簡體   English   中英

無法使用 comm / diff 比較兩個文件

[英]Not able to compare two files with comm / diff

長期潛伏者,第一次海報。

幾天來,我試圖比較兩個排序的文件,但沒有成功。 我嘗試了commdiff ,甚至是grep -v -f 即使我將它們合並在一起並使用uniq -c ,它也將每個出現都表示為 1 ,因此它顯然不認為這些行是相同的。 comm 還顯示所有 4000 行對於兩個文件都是唯一的。 但對於人眼來說,它們是相同的。 file -i顯示它們具有相同的編碼。 我通過 VI 檢查了隱藏字符,它們都完全相同。

[root@server tmp]# file -i master.tmp
master.tmp: text/plain; charset=us-ascii
[root@server tmp]# file -i mediaa.tmp
mediaa.tmp: text/plain; charset=us-ascii

我不能分享確切的行,但它們看起來類似於:

XXXXX%20(35e4df6a-48dd-43f-921-03942bd4)_1614884940

文件之間的唯一區別是它們的創建方式。 一種是直接應用命令的output。 另一個是從不同應用程序的 output 拼湊而成的,必須使用AWK進行操作以實現相同的結構。 另一個線索是,一旦我將文本復制到我的記事本++,然后將其復制回終端,它就會開始正常工作。 但這是不需要的,整個比較將成為更大腳本的一部分,我需要它是自動的。 是否有任何命令可以用來清除文件結構中的任何差異? 我找到了iconv但我不確定我應該嘗試哪種其他編碼。 任何想法我在這里缺少什么? 謝謝

好的,找到原因了。 sed -nl顯示其他文件的不同類型的回車。 奇怪的是VI:set list沒有顯示差異。

奇怪的是 VI:set list 沒有顯示差異。

如果您在加載 CR+NL 文件后立即查看狀態行,您會注意到vi中的差異,文件名旁邊顯示[dos]

如果您只想比較文件,可以使用grep-Z (忽略行尾的空格)選項。

如果要從 DOS 文件中刪除 CR,可以使用tr -d \\r <withCR >withoutCR

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM