제가 작업 중인 프로젝트의 경우 특정 패턴과 구체적으로 일치해야 하는 식별자 목록이 필요합니다.
기본적으로 파일에는 관련 줄을 선택하기 위해 다른 파일에서 사용하고 싶은 패턴 목록이 있습니다.
다행히도 grep -f patternfile.txt otherfile.txt > releventlinesfile.txt
그것은 작동하지 않습니다. 어느 것도 아니다 grep -w
.
otherfile.txt의 파일 구조는 다음과 같습니다.
test_id gene_id gene locus sample_1 sample_2 status value_1 value_2 log2(fold_change) test_stat p_value q_value significant
TSS10019 XLOC_007800 ABC73140 1:27498963-27503819 BA BB NOTEST 0.666344 0.628569 -0.0841946 0 1 1 no
TSS1002 XLOC_000726 ABC14350 1:4907952-4913152 BA BB NOTEST 0 0 0 0 1 1 no
TSS10020 XLOC_007801 ABC73150 1:27504093-27506154 BA BB OK 11.8553 13.3817 0.174729 1.26968 0.02755 0.107242 no
TSS10021 XLOC_007802 ABC73165 1:27508724-27508949 BA BB NOTEST 0 0 0 0 1 1 no
TSS10022 XLOC_007803 ABC73170 1:27511324-27514797 BA BB OK 0.893787 0.557083 -0.682037 -0.590335 0.33135 0.575735 -no
Patternfile.txt의 파일 구조는 다음과 같습니다.
TSS10020
TSS10056
TSS10378
TSS10708
TSS11795
내가 원하는 출력:
TSS10020 XLOC_007801 ABC73150 1:27504093-27506154 BA BB OK 11.8553 13.3817 0.174729 1.26968 0.02755 0.107242 no
답변1
결과에서 부분적으로 일치하는 대신 전체 단어만 일치시키려면 -w
및 -f
옵션 과 함께 사용해야 합니다 .grep
grep -wf patternfile.txt otherfile.txt > releventlinesfile.txt
답변2
파일 개수가 좀 헷갈리네요.
- lijst_expressie.txt
- sig_splicing.txt
- 접합.diff
- tss_group_exp.diff
- tss_lijst.txt
원인:
splicing.diff의 lss_lijst.txt에서 TSS를 찾고 싶습니다.
짧은 목록을 사용하세요:tss_lijst.txt
TSS1
TSS10
그리고 splicing.diff
당신이 제공한 대로 다음을 사용하여 file1에 나열된 TSS를 추출할 수 있습니다.
awk 'NF==1{ tss[$1]=1 ; next ; } $1 in tss { print ;}' tss_lijst.txt splicing.diff
TSS1 XLOC_000001 AT1G01010 1:3630-5899 BAY_ST BAY_LP OK 0 0 0.219269 0 0.1726 0.474413 no
TSS10 XLOC_000007 AT1G01180 1:75404-76921 BAY_ST BAY_LP OK 0 0 0.0277474 0 0.77985 0.900632 no
긍정을 얻다
awk '$14 == "yes" ' splicing.diff