파일의 유전자 열을 비교하고 Linux에 존재하는 유전자 및 열의 수를 출력합니다.

파일의 유전자 열을 비교하고 Linux에 존재하는 유전자 및 열의 수를 출력합니다.

이와 같은 파일에 3개의 게놈이 있습니다

col1    col2    col3
CXCL9   CXCL9   CXCL9
MAP2K6  MAP2K6  MAP2K6
CXCL10  CXCL10  CXCL11

3개의 열을 일치시키고 몇 개의 열에 어떤 유전자가 있는지 확인하고 싶습니다. 원하는 출력 형식은 다음과 같습니다.

CXCL9 3
MAP2K6 3
CXCL10 2
CXCL11 1

누구든지 나를 도와줄 수 있습니까? 시간이 많이 절약될 것입니다.

답변1

sed+sort+uniq해결책:

sed 's/[[:space:]]\+/\n/g' file | sort | uniq -c

산출:

  2 CXCL10
  1 CXCL11
  3 CXCL9
  3 MAP2K6

답변2

유전자 이름 사이에 공백이 없고 열 이름이 사용자가 제공한 패턴을 따르는 경우 다음 스크립트를 힌트로 사용할 수 있습니다.

#!/bin/bash
for i in `cat genes.txt`; do
    [[ $i == "col"* ]] || echo $i;
done | sort | uniq -c

답변3

Awk해결책:

awk '{ for(i=1;i<=NF;i++) a[$i]++ }END{ for(i in a) print i, a[i] }' file

산출:

CXCL11 1
MAP2K6 3
CXCL9 3
CXCL10 2

관련 정보