bash를 사용하여 열과 행을 선택적으로 삭제하는 방법은 무엇입니까?

bash를 사용하여 열과 행을 선택적으로 삭제하는 방법은 무엇입니까?

현재 다음과 같은 데이터 세트가 있습니다.

입력하다

Hybridization REF   TCGA-FA-8693-01A-11D-2399-05    TCGA-FA-8693-01A-11D-2399-05    TCGA-FA-8693-01A-11D-2399-05    TCGA-FA-8693-01A-11D-2399-05    TCGA-FA-A4BB-01A-11D-A31Y-05    TCGA-FA-A4BB-01A-11D-A31Y-05    TCGA-FA-A4BB-01A-11D-A31Y-05    TCGA-FA-A4BB-01A-11D-A31Y-05
Composite Element REF   Beta_value  Gene_Symbol Chromosome  Genomic_Coordinate  Beta_value  Gene_Symbol Chromosome  Genomic_Coordinate
cg00000029  0.856505141 RBL2    16  53468112    0.334665026 RBL2    16  53468112
cg00000108  NA  C3orf35 3   37459206    NA  C3orf35 3   37459206
cg00000109  NA  FNDC3B  3   171916037   NA  FNDC3B  3   171916037

데이터세트 크기가 10GB에 가까워 훨씬 더 큽니다. 예를 들어, R에서 수행하기에는 너무 큽니다.

그러나 실제로는 중복되는 열이 많습니다. 예를 들어, 제목이 (두 번째 행) 및 인 각 열 중 하나만 유지하면 됩니다 Gene_Symbol. 개별 컬럼은 샘플마다 다르기 때문에 보존해야 합니다. 샘플 ID는 첫 번째 줄에 있습니다. 따라서 위 예에서 원하는 출력은 다음과 같습니다.ChromosomeGenomic_CoordinateBeta_value

원하는 출력

Hybridization REF   Gene_Symbol Chromosome  Genomic_Coordinate  TCGA-FA-8693-01A-11D-2399-05    TCGA-FA-A4BB-01A-11D-A31Y-05
cg00000029  RBL2    16  53468112    0.856505141 0.334665026
cg00000108  C3orf35 3   37459206    NA  NA
cg00000109  FNDC3B  3   171916037   NA  NA

중복된 정보를 제거하기 위해 첫 번째 행의 열 헤더를 섞었습니다.

Bash를 사용하는 가장 효율적인 방법은 무엇입니까?

답변1

헤더가 파일 상단의 두 줄이라고 가정하면 수동으로 수정하겠습니다. (쉬운 방법: tail -n +3파이프를 통해 처음 두 줄을 건너뛴 다음 필요한 헤더가 있는 파일과 연결합니다.)

그런 다음 기본적으로 [TAB] 문자로 분할되는 를 사용하여 나머지 작업을 수행할 수 있습니다. cut이는 이미 가지고 있는 문자이므로 매우 편리합니다. 그냥 파이프로

cut -f1,3,6

또는 다른 것(이 예에서는 열 1, 3, 6을 선택합니다).

관련 정보