[쏭쏭]님이 남기신 글:
>-----------------------------------------
>답변자가 기본적으로 참고할 내용입니다.
>- 배포판(옵션) :
>- 커널버전(옵션)
:
>- 데몬버전(예:apache
1.3.27) :
>- 데몬설치유형(RPM/컴파일/기타)
:
>-----------------------------------------
>
>안녕하세요
>
>두파일의 내용을 비교해야 될 일이 생겼는데요..
ㅡㅡ;
>
>먼저 cmp , comm , diff 등의 명령어들로 않되서 질문
드립니다.
>
>
>파일내용1
>--------------
>1
>2
>3
>4
>--------------
>
>
>파일내용2
>--------------
>4
>3
>2
>1
>--------------
>
>
>
>이럴경우
>
>
>#comm 파일내용1 파일내용2
>
>이러면
>
>4만 같다구 나오거든요..
>
>
>저가 원하는 부분은
>
>
>파일내용1과 파일내용2가
>
>모두 행에 같은게 존재하므로
>
>1
>2
>3
>4
>
>다 같다 이렇게 나오고 싶거든요..
>
>
>즉
>
>
>----------------------------------
>파일내용1 파일내용2 같은놈
>
> 1
> 2
> 3
> 4
>----------------------------------
>
>
>
>만약
>
>파일내용1
>---------------------
>1
>2
>3
>4
>5
>----------------------
>
>면
>
>
>#comm 파일내용1 파일내용2
>
>----------------------------------
>파일내용1 파일내용2 같은놈
>
> 1
> 2
> 3
> 4
> 5
>----------------------------------
>
>
>이렇게 나왔으면 하는데요...
>
>
>다른 방법이 없을까요???
>
>쉘이나 뭐 다른 명령어 조합 등등등 ???
>
>조언 부탁드립니다.
========================================
잠시 diff 알고리즘(?)에 대해서 생각해 보았습니다.
내용은 아주 단순합니다. ㅎㅎ
즉 우측 파일의 각 라인을 기준으로 왼쪽 파일의 각 라인의
일치 여부를 보여줄 뿐입니다.
편의상 왼쪽 파일(비교대상)을
A, 우측 파일(비교기준)을
B 라고 하면,
B1(4) ? A1(1) ==> 불일치 ==> -1
B1(4) ? A2(2) ==> 불일치 ==> -2
B1(4) ? A3(3) ==> 불일치 ==> -3
B1(4) ? A4(4) ==> 일치 ==> 4
B2(3) ? A5(5) ==> 불일치 ==> +3
B3(2) ? A5(5) ==> 불일치 ==> +2
B4(1) ? A5(5) ==> 불일치 ==> +1
B5(5) ? A5(5) ==> 일치 ==> 5
...
이런식으로 +, - 로 표기해 갑니다. ㅠㅠ
때문에 위의 하고자 하는 목적과 전혀 다른 결론이 나옵니다.
만약 하고자 하는 결과가 라인 단위가 아닌 같은 값 존재
여부만 확인하고자 한다면,
---------
#!/bin/sh
IFS='
'
while read LINE ;
do
echo -n "${LINE} : "
[ -n "`grep ^${LINE}$ < 오른쪽파일`"
] && echo true || echo false
done < 왼쪽파일
exit 0
----------
이런식으로 각 라인마다 검색해 봐야 합니다.
|