특정 패턴이 포함된 경우 한 텍스트 파일의 줄을 다른 텍스트 파일로 복사하고 싶습니다.

특정 패턴이 포함된 경우 한 텍스트 파일의 줄을 다른 텍스트 파일로 복사하고 싶습니다.

RS 번호(첫 번째 열)와 기타 변형이 포함된 .txt 문서가 있습니다.

rs2925757 A 0.113329
rs10929982 T 0.113329
rs2119812 C 0.182322
rs7629805 A 0.182322
rs6771792 C 0.19062
rs11709077 G 0.157004
rs13083375 G 0.14842
rs13064760 C 0.14842
rs7638903 G 0.14842
rs4684847 C 0.14842

다음과 같은 다른 txt 문서가 있습니다(2열의 RS 번호).

--- rs181860478 30004551 C A 0.000 0.000 1.000 0 -1 -1 -1
--- rs187641010:30004588:C:A 30004588 C A 0.000 0.001 1.000 0 -1 -1 -1
--- rs678486:30004607:A:G 30004607 A G 0.204 0.961 0.983 0 -1 -1 -1
--- rs145540866:30004629:C:A 30004629 C A 0.000 0.000 1.000 0 -1 -1 -1
--- 12:30004702:C:T 30004702 C T 0.000 0.001 1.000 0 -1 -1 -1
--- 12:30004732:A:G 30004732 A G 0.000 0.099 0.999 0 -1 -1 -1
--- exm-rs147708347 30004743 A C 0.001 0.965 1.000 0 -1 -1 -1

이는 rs 번호가 열에 단독으로 있을 때도 있고, 그 뒤에 올 때도 있고 :----------, rs로 시작하는 경우도 있음을 의미합니다 exm-.

txt 파일 2에서 txt 파일 1에 나열된 모든 rs 번호를 추출할 수 있기를 원합니다. 이를 수행하는 방법에 대한 제안이 있습니까?

답변1

다음 명령을 사용할 수 있습니다.

grep -Fwe "$(awk '{print $1}' file1)" file2 >output.txt

이는 file1의 첫 번째 열을 가져와 grepfile2의 패턴 검색 집합에 제공합니다.

제공하신 예제 데이터에는 일치하는 데이터가 없지만 작동합니다.

답변2

사용가입하다운영자. 구분 기호가 공백이라고 가정합니다.

join -t ' ' -1 1 -2 1 \
           <(sort -t ' ' -k1,1 file1.txt) \
           <(tr ":" " " < file2.txt | cut -d ' ' -f 2 | sort -t ' ' -k1,1 ) 

추신: 생물정보학 문제의 경우 다음을 사용해야 합니다.http://biostars.org

관련 정보