我希望确保两个文本文件相同,问题是在Windows平台上生成了file1(SELECT_20150210.txt
),在mac上生成了file2(sel.txt
) ,因此这两个文件具有不同的行终止字符,即使它们看起来相同:
第一行:
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
有没有办法cmp
或diff
这两个文件并告诉cmp
忽略不同的行终止字符?谢谢
答案 0 :(得分:2)
假设: 您不想改变原始文件的行结尾
为避免创建临时文件,您可以使用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 < / p>
答案 1 :(得分:2)
在OSX上,您可以使用此diff
:
diff osx-file.txt <(tr -d '\r' < win-file.txt)
tr -d '\r' < win-file.txt
会从r
中删除win-file.txt
。