2014-05-18 4 views
1

으로 라인을 정렬 : 첫 번째는이 같은 모든 시퀀스 이름이 있습니다유닉스 나는 두 개의 파일을 두 개의 파일을 비교하고 라인

comp10604_c0_seq1 
comp108_c0_seq1 
comp11450_c0_seq1 
comp11655_c0_seq1 
comp11804_c0_seq1 
comp13465_c0_seq1 
comp13695_c0_seq1 

두 번째는이 시퀀스에 관한 정보를 가지고 있지만, 특정에 대한 정보 부족을 이 같은 시퀀스 :

: 어떤 정보도이 같은 순서가없는 경우 내가 줄 바꿈을 교체하고 시퀀스의 이름을 삽입 파일을 원하는

comp10604_c0_seq1 AB491617.1 
comp11450_c0_seq1 AM920464.1 
comp11655_c0_seq1 HQ865168.1 
comp11804_c0_seq1 KC900889.1 
comp13465_c0_seq1 HM590421.1 
comp13695_c0_seq1 GU474930.1 

comp10604_c0_seq1 AB491617.1 
comp108_c0_seq1 NAN 
comp11450_c0_seq1 AM920464.1 
comp11655_c0_seq1 HQ865168.1 
comp11804_c0_seq1 KC900889.1 
comp13465_c0_seq1 HM590421.1 
comp13695_c0_seq1 GU474930.1 

당신의 도움이

답변

4

귀하의 입력은 분류 나타납니다 주셔서 감사합니다. join을 사용할 수 있습니다. 누락 된 필드의 값을 지정 : 샘플 입력하여

join -e "NaN" -a1 -a2 -o 1.1 2.2 first second 

, 그것은 생산하는 것 :

comp10604_c0_seq1 AB491617.1 
comp108_c0_seq1 NaN 
comp11450_c0_seq1 AM920464.1 
comp11655_c0_seq1 HQ865168.1 
comp11804_c0_seq1 KC900889.1 
comp13465_c0_seq1 HM590421.1 
comp13695_c0_seq1 GU474930.1 

파이프 column -t로 출력 당신이 그것을 원하는 경우 정렬 할 수 있습니다.

+0

그리고 정보 파일에 여러 개의 열이 있는데 같은 시간에 가입하고 싶습니다. – Muramasa

+1

@muramasa는 한 번에 2 개의 파일을 결합하고, 이전 조인의 STDOUT을 입력으로 사용하고 세 번째 파일을 다른 입력으로 취하는 다른 조인으로 결과를 파이프합니다. 더 자세한 정보는'info join'을 참고하십시오. – devnull

1

파일을 정렬하고 하나의 열만 비교하려는 경우 devnull에 올바른 대답이 있습니다.

awk 'NR==FNR{seq[$1]=$2;next}{print $1,($1 in seq?seq[$1]:"NaN")}' file2 file1 
comp10604_c0_seq1 AB491617.1 
comp108_c0_seq1 NaN 
comp11450_c0_seq1 AM920464.1 
comp11655_c0_seq1 HQ865168.1 
comp11804_c0_seq1 KC900889.1 
comp13465_c0_seq1 HM590421.1 
comp13695_c0_seq1 GU474930.1 

우리는 제 1 열에서 인덱스 배열 값으로 2 열 저장 파일 2 반복 :

여기 awk를 사용하는 또 다른 방법이다. file1의 경우 1 열을 출력하고 키가 우리 배열에 있는지 확인합니다. 그렇다면 우리는 NaN을 인쇄하고 옆에 값을 인쇄합니다.

관련 문제