2012-12-19 3 views
3

저는 리눅스에 익숙하기 때문에 배쉬 명령어와 더 많은 경험을 가진 사람이 저를 도울 수 있다고 생각합니다. 에,실행 로그를 비교하여 실행 시간을 무시합니다.

12345 ps line 1 content 
23456 ps line 2 content 
line 3 content 
345 ps line 4 content 

그 토큰이 각 로그에 다른 값을 가지고 있지만 : 나는 로그의 실행의와 2 개 개의 다른 텍스트 파일을 비교 싶어하지만, 일부 라인 (안 모두)는 시간이 같은 '토큰으로 시작 저 비교, 나는 그 (것)들에 관하여 걱정하지 않는다, 나는 선 내용을 비교하고 그 (것)들을 묵살하고 싶다. 나는 'sed'명령을 사용하여 토큰없이 새 파일을 생성 한 다음 그 파일을 comepare 할 수 있지만 반복적으로 그렇게하는 척하고 하나의 명령이나 하나의 sh 파일 만 사용하면 시간을 절약 할 수 있습니다. 나는 'sed'와 'diff'를 결합하려고했지만 성공하지 못했습니다. 아무도 나를 도울 수 없습니까?

답변

7

당신은 파일의 시작 부분에서 번호를 제거하려면 다음 나오지도 하나 라이너를 사용할 수 있습니다

sed 's/^[0-9]* ps//g' file1 

당신은 process substitution를 사용할 수있는 두 개의 같은 파일 (이하 타임 스탬프)은 diff하십시오.

diff <(sed 's/^[0-9]* ps//g' file1) <(sed 's/^[0-9]* ps//g' file2) 
+0

완벽하게 작동합니다! 대단히 감사합니다 cmh! – Felipetto

+0

[프로세스 대체] (http://tldp.org/LDP/abs/html/process-sub.html)에 대한 정보에 감사드립니다! 그것은 내 일상 업무에서 매우 유용 할 것입니다. – Felipetto

0

안된 당신이 개 입력 파일 및 예상 출력하지만 설명에서 나는 이것이 당신이 원하는 것을 할 것이라고 생각되지 않았다 이후 :

awk ' 
    { sub(/^[[:digit:]]+[[:space:]]*/,"") } 
    NR==FNR { file1[FNR] = $0; next } 
    { print ($0 == file1[FNR] ? "==" : "!="), $0 } 
' file1 file2 

이 그것을하지 않는 경우를 포스트 작은 샘플 입력과 예상 출력.

관련 문제