현재 다음과 같은 데이터 세트가 있습니다.
입력하다
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는 첫 번째 줄에 있습니다. 따라서 위 예에서 원하는 출력은 다음과 같습니다.Chromosome
Genomic_Coordinate
Beta_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을 선택합니다).