2014-07-07 3 views
1

두 개의 .txt 파일을 통해 일치하는 항목을 찾고 고유 한 줄만 인쇄하려고합니다. 나는 숫자와 이름의 목록과 단지 부분적인 숫자의 두 번째 목록을 가지고있다.mac bash를 사용하여 중복 문자열에 대해 두 파일 비교

파일 형식이
5553239090처럼 배트맨 있습니다

초 파일은 내가 첫 번째 여섯 일치하는 라인을 복용하고 있는지 확인하려면에만 6 자리 숫자 555,323


입니다 숫자가 239090이라면 그 줄을 빼고 싶지 않을 것입니다. 지금까지 내가 그 작품을 찾은 것은 이것이다. 일부만 일치하는 부분을 모두 꺼내지는 않았지만 어떤 이유로이 작품이 무엇인지 발견했다.

while read line 

do 
echo $line 
    while read line2 

     do 

      if [[ "${line:0:6}" != "$line2" ]]; then 

       echo $line >> uniqueList2.txt 
       echo ${line:0:6} 
      fi 

     done < file2.txt 

done < file1.txt 

그것은 파일 2의 상단에있는 숫자와 가장 잘 일치하는 것처럼 보이며 목록을 더 내려 가면 놓칠 가능성이 큽니다.

내가보고 싶었던 점이나 더 좋은 방법이 있습니까?

당신은이 같은 awk 사용할 수 있습니다

답변

1

:

awk 'FNR==NR {a[$1];next} {for (i in a) if (index($0, i)==1) print}' file2 file1 

또는 다른 사람이 사용할 수를이 grep

grep -f <(sed 's/^/\^/' file1) file2 
+0

나는 그것을 시도했지만 문제가 나는 수가 어디에서 경기를 얻는 것을이었다 단지 처음 6시 – Dom

+0

ok updated awk 명령을 지금 참조하십시오. – anubhava

+0

일부 일치는 있지만 전부는 아닙니다. 나는 이름이있는 50 개의 숫자 목록을 가지고 있으며 그 중 50 개는 25 개가 일치해야합니다. 내 원래 코드로 목록의 순서에 따라 3-5을 뽑아 내고 AWK를 통해 8 개의 일치 항목을 꺼 냈습니다. 나는 왜 그것이 효과가 없는지 확신하지 못한다. – Dom