2016-07-09 3 views
0

지난 번 나는 윈도우즈 배치 (Windows Batch)에서 통신으로 많은 작업을 수행하여 서로간에 텍스트 파일을 비교했습니다. 그래서 정상적으로 제가 잘못 할 수있는 것은 없습니다. 내 다른 프로젝트에서 아래의 코드가 잘 작동하지만 실제 경우가 아니며 나는 그것에 대한 이유를 볼 수 없습니다.Windows에서 리눅스 통신 - 출력은 0이어야합니다.

좋아, 내가 통신에 대해 배운 것은 두 파일을 모두 정렬해야하므로 지금은 새 파일> 보관 파일과 비교하려고했고 출력은 이 아니고이 아닌 행이어야한다는 것입니다. 테스트를 위해

D:/filetype/core/sort.exe -b D:\filetype\test\all.txt -oD:\filetype\test\all.txt 

D:/filetype/core/sort.exe -b D:\filetype\test\listfile_export_tmp2.txt -oD:\filetype\test\listfile_export_tmp2.txt 

D:/filetype/core/comm.exe -2 -3 D:\filetype\test\listfile_export_tmp2.txt D:\filetype\test\all.txt > D:\filetype\test\output.txt 

all.txt 나는 여기에 새로운 것이 없기 때문에 출력이 0이되어야하므로 내 all.txt 비교하고자하는 텍스트를 추가했다. 그러나 결과로 output.txt 정확히 내가 들어있는 첫 번째 텍스트 파일에 온다. 필자는 all.txt를 손으로 검사했는데 비교하려고하는이 줄들은 안에 있으며, 나는 그 종류가 testfile과 다른 글자들로 올바르게 작동하는지 점검했다. 그래서 여기

내가 내 다른 프로젝트에서

  1. 생각 내가 볼 수없는 차이가있는 것입니다. 그리고 그것은 는
  2. 통신은 하나 TEXTFILE 작은하는 경우 두 파일을 비교할 수없는 내 잘못이야, 난에 테스트하기 위해 두 파일을 제공 할 수

1킬로바이트 파일이있는 50 메가 바이트 파일을 비교하려고 요청

답변

0

좋아요. 알아낼 수있었습니다. grep과 comm은 비교하는 동안 빈 줄과 일치합니다. 따라서 작은 텍스트 파일을 입력으로 사용하고 다른 빈 행을 몇 개 더 줄 경우 (내 경우에는 더 커야 함) 모든 공백 행과 일치 할 가능성이 높으므로 입력을 다시 볼 수 있습니다.

내가 사용하는 빈 줄

윈도우

sed.exe "/^\s*$/d" 

리눅스

sed '/^\s*$/d' 

을 나오지도 그리고 jup 지금 모든 다시 잘 작동 제거합니다. (그러나 정렬하는 것을 잊지 마세요)

관련 문제