2017-04-06 3 views
0

나는 두 개의 파일을 가지고 있는데 첫 번째 두 열을 기준으로 파일 1의 줄을 파일 2의 줄과 일치시켜야합니다 (ab)를 사용하여 출력 파일을 만듭니다. 두 파일 모두 동일한 구조이지만 동일한 내용은 아닙니다. 나는 대본을 썼다. 하지만 추가 문제가 있습니다. 파일 1의 코드 (a b)가 파일 2의 코드와 일치하지 않는 경우가 있습니다. 이러한 경우도 참조 할 수있는 옵션이 있습니까?파일 1의 코드가 파일 2의 코드와 일치하지 않는 경우 출력 파일에 쓰기

#!/bin/bash 
while read file1 
do 
    file1_line=(${file1_lines[$counter_file1]}) 
    file1_a=${file1_line[0]} 
    file1_b=${file1_line[1]} 
    while read line_file2 
    do 
     file2_line=(${file2_lines[$counter_file2]}) 
     file2_a=${file2_line[0]} 
     file2_b=${file2_line[1]} 

      if ["file1_a" == "file2_a"] && ["file1_b" == "file2_b"] 
      then 
       echo "TRUE" 
      else 
       counter_file2=[counter_file2+1] 
      fi 
    done < $file2 
    counter_file2=0 
    counter_file1=$[counter_file1+1] 
done 

답변

0

파일의 코드 1 (시종)의 코드와 일치하지 않을 경우가 있습니다 : 죄송합니다, 나는 완전한 초보자 ... 여기

같이 내 코드는 모습입니다 해요 파일 2.이 경우를 참조 할 수있는 옵션이 있습니까?

내선 while 루프 내에서 상태 플래그를 설정하여 회선이 일치하는지 여부를 추적 할 수 있습니다. 내부 루프 바깥쪽에 특수 케이스를 처리 할 수 ​​있습니다.

나는 그것을 테스트하지 않은,하지만이 같은 작동합니다 :

#!/bin/bash 
while read file1 
do 
    file1_line=(${file1_lines[$counter_file1]}) 
    file1_a=${file1_line[0]} 
    file1_b=${file1_line[1]} 

    had_match=0 
    while read line_file2 
    do 
     file2_line=(${file2_lines[$counter_file2]}) 
     file2_a=${file2_line[0]} 
     file2_b=${file2_line[1]} 

      if ["file1_a" == "file2_a"] && ["file1_b" == "file2_b"] 
      then 
       had_match=1 
       echo "TRUE" 
      else 
       counter_file2=[counter_file2+1] 
      fi 
    done < $file2 

    if ((had_match == 0)); then 
     # Do something special here 
    fi 

    counter_file2=0 
    counter_file1=$[counter_file1+1] 
done