2017-11-11 1 views
-1

grep 명령을 사용하여 목록을 기반으로 파일을 필터링했습니다.Grep 명령 오류

grep -w -F -f list.txt file1.tsv > file2.tsv

그러나 그것은뿐만 아니라 나에게 몇 가지 추가 라인을주고있다. 내 목록에는 2130 개의 값이있는 반면 file2에는 2213 개의 고유 한 행이 있습니다. 다음은 file1의 처음 몇 줄입니다.

Variant   Gene    
    rs1042714  ADRB2     
    rs2297480  FDPS   
    rs12248560  CYP2C19  

다음은 List.txt의 일부 행입니다.

rs228729 
rs228642 
rs228666 
rs2640909 

목록 파일을 기반으로 파일을 필터링하려면 어떻게해야합니까?

+2

명령이 정확합니다. 결과는 * list *의 일부 값이 * file1 * – hek2mgl

+0

에 list.txt 및 file1.tsv를 어딘가에 업로드하고 질문에 대한 링크를 여러 번 나타냄을 의미합니다. – Cyrus

+0

중복 값을 제거 했으므로 file1의 목록에서 여러 번 나타나는 값이 없습니다. – Sarah

답변

0

명령은 정확한지, 당신의 명령을 확인하려면 다음

grep -w -F -f list.txt file1.tsv > file2.tsv 

이 경기를 반전 -v과 같은 명령을 실행 file2.tsv.invert의

grep -v -w -F -f list.txt file1.tsv > file2.tsv.invert 

확인 내용을

파일을 사용하여 테스트하십시오 (모든 결과는 정상입니다) :

grep -w -F -f list.txt file2.tsv.invert | wc -l 
> 0 # it's ok 

wc -l file2.tsv.invert file2.tsv # total must be equal to file1.tsv 
> 2544 file2.tsv.invert 
> 2997 file2.tsv 
> 5541 total 

wc -l file1.tsv 
> 5541 file1.tsv 

모두 괜찮아 보인다!

+0

file2.tsv 및 file2.tsv의 총 행 수가 file1.tsv를 초과합니다. 나는 중복을 제거한 후에 총을했다. excel에서 두 파일을 모두 검사 할 때 file2.tsv와 file2.tsv.invert에 모두 표시되는 값이 있습니다 – Sarah

+0

DOS 파일이 있습니까? 필요할 경우 dos2unix를 사용하여 변환하십시오. – Indent

+0

어딘가에 파일 업로드 시도 – Indent