이 사이트의 제안 사항을 모두 시도했지만 결과가 불완전합니다.
파일 1은 파일 2에서 검색하고 필요한 정보가 포함된 전체 행 세트를 추출하려는 단백질 목록을 보여줍니다.
Q14157
Q14444
P23246
Q96EP5
Q9UN86
Q14011
Q7Z739
Q9Y383
Q96I24
Q9NP61
P29558
P51116
P00441
Q2TBT7
Q9NZI8
파일 2에는 파일 1의 목록에서 추출할 정보가 포함되어 있습니다(이 섹션은 여기에 불완전하게 붙여넣어져 있음).
P21796 260 Phosphoserine S 1
P21796 266 N6-acetyllysine K 4
P21796 266 Ubiquitination K 3
P21796 274 N6-acetyllysine K 1
P21796 274 Ubiquitination K 3
P18848 45 Sumoylation K 1
P18848 45 Ubiquitination K 2
P18848 53 Sumoylation K 1
P18848 55 Ubiquitination K 2
P18848 69 Phosphoserine S 4
P18848 75 Ubiquitination K 2
P18848 88 Ubiquitination K 2
P18848 107 Phosphothreonine T 1
P18848 114 Phosphothreonine T 1
P18848 115 Phosphothreonine T 1
P18848 119 Phosphothreonine T 1
P18848 213 Phosphothreonine T 1
P18848 215 Phosphoserine S 1
P18848 219 Phosphoserine S 4
P18848 224 Phosphoserine S 3
P18848 231 Phosphoserine S 1
P18848 235 Phosphoserine S 1
P18848 245 Phosphoserine S 3
P18848 248 Phosphoserine S 3
P18848 267 Sumoylation K 1
P18848 277 Ubiquitination K 1
P18848 293 Phosphothreonine T 1
P18848 295 Phosphotyrosine Y 1
P18848 335 Ubiquitination K 2
P18848 343 N6-acetyllysine K 1
P18848 348 N6-acetyllysine K 1
P23246 7 Dimethylation R 1
P23246 7 Omega-N-methylarginine R 2
P23246 8 Phosphoserine S 3
P23246 9 Asymmetric dimethylarginine R 1
P23246 9 Dimethylation R 1
P23246 9 Methylation R 1
P23246 9 Omega-N-methylarginine R 3
P23246 19 Dimethylation R 1
P23246 19 Methylation R 1
P23246 19 Omega-N-methylarginine R 2
P23246 25 Dimethylation R 1
P23246 25 Methylation R 1
P23246 25 Omega-N-methylarginine R 2
P23246 32 Dimethylation R 1
P23246 32 Methylation R 1
P23246 33 Phosphoserine S 8
Q14011 17 Phosphothreonine T 1
Q14011 21 Phosphoserine S 1
Q14011 33 Phosphoserine S 1
Q14011 47 Methylation R 1
Q14011 71 Phosphoserine S 3
Q14011 84 Ubiquitination K 2
Q14011 94 Dimethylation R 1
답변1
grep -f file1 file2
file2
모든 패턴을 검색 file1
하고 일치하는 라인을 인쇄해야 합니다. (그러나 모든 곳에서 일치하는 경우 첫 번째 열 뒤에 단백질 이름이 나타나면 거짓 긍정이 발생할 수 있습니다.) 고정 문자열을 일치시키려면 -F
.
답변2
이 문제를 해결하는 한 가지 방법은 file1의 모든 정규식 문자를 이스케이프하고 다음 단계에서 양쪽 끝에서 문자열을 제한하는 것입니다. 단계의 순서가 중요하다는 점에 유의하세요.
hybrid regex
이는 일치할 실제 문자열이 모든 정규식 BRE 문자를 이스케이프하여 리터럴 문자열이 되고, 주변에 정규식 문자를 배치하여 일치를 첫 번째 필드로 제한하는 방법 이라고 할 수 있습니다 .
$ < file1 \
sed -e '
s:[[\.*^$]:\\&:g
s/.*/^&[[:blank:]]/
' | grep -f - file2
*1단계 => BRE 표현식을 사용하여 file1의 문자열을 grep에 해당하는 일반 문자열로 렌더링합니다.
*2단계 => 위 이스케이프 문자열의 왼쪽을 줄의 시작 부분으로 제한하고 오른쪽을 공백 문자로 제한합니다.
- 참고 어린이: BRE 정규식 문자를 이스케이프 처리하고 있습니다. 그러니
grep
로 전화하지 마세요-E
.
답변3
다음 awk 명령을 사용할 수 있습니다
awk 'NR==FNR{a[$1];next}($1 in a){print $0}' file1 file2