gpt4 book ai didi

linux - 比较/区分具有不同行终止符的两个文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:05 25 4
gpt4 key购买 nike

我有两个文本文件,我希望确保它们是相同的,问题是 file1 (SELECT_20150210.txt) 是在 windows 平台上生成的,而 file2 (sel.txt ) 是在 mac 上生成的,所以这两个文件具有不同的行终止字符,即使它们看起来相同:

第一行:

Eriks-MacBook-Air:hftdump erik$ head -n 1 sel.txt
SystemState 0x04 25 03:03:48.800 O
Eriks-MacBook-Air:hftdump erik$ head -n 1 SELECT_20150210.txt
SystemState 0x04 25 03:03:48.800 O

cmp 表示它们是不同的:

Eriks-MacBook-Air:hftdump erik$ cmp sel.txt SELECT_20150210.txt
sel.txt SELECT_20150210.txt differ: char 35, line 1

但只是终止字符不同:

Eriks-MacBook-Air:hftdump erik$ head -n 1 SELECT_20150210.txt | hexdump -C
00000000 53 79 73 74 65 6d 53 74 61 74 65 09 30 78 30 34 |SystemState.0x04|
00000010 09 32 35 09 30 33 3a 30 33 3a 34 38 2e 38 30 30 |.25.03:03:48.800|
00000020 09 4f 0d 0a |.O..|
00000024
Eriks-MacBook-Air:hftdump erik$ head -n 1 sel.txt | hexdump -C
00000000 53 79 73 74 65 6d 53 74 61 74 65 09 30 78 30 34 |SystemState.0x04|
00000010 09 32 35 09 30 33 3a 30 33 3a 34 38 2e 38 30 30 |.25.03:03:48.800|
00000020 09 4f 0a |.O.|
00000023

那么有没有办法cmpdiff 这两个文件并告诉cmp 忽略不同的行终止符?谢谢

最佳答案

假设:您不想更改原始文件的行尾

为避免创建临时文件,您可以使用 process substitution :

diff my_unix_file <(dos2unix < my_dos_file)
diff my_unix_file <(sed 's/\r//' my_dos_file)
diff my_unix_file <(tr -d '\r' < my_dos_file)

更新(将评论转化为答案):由于 anishsane 完成了一些改进

关于linux - 比较/区分具有不同行终止符的两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31220910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com