como extrair certas colunas

0

Eu tenho um conjunto de dados e preciso extrair certas colunas usando o linux por exemplo

Eu tenho as seguintes colunas

1,2,3,4,5,6,7,8,9,10

e eu quero manter col 1 então selecione col 2 e pule 3,4,5 the e selecione col 6 e pule 7,8,9 e selecione col 10 e então um então eu quero pular 3 colunas cada vez

aqui faz parte dos dados

Composite Element REF   Beta_value  Gene_Symbol Chromosome  Genomic_Coordinate  Beta_value  Gene_Symbol Chromosome  Genomic_Coordinate
cg00000029  0.188204193 RBL2    16  53468112    0.166988369 RBL2    16  53468112
cg00000108  NA  C3orf35 3   37459206    NA  C3orf35 3   37459206
cg00000109  NA  FNDC3B  3   171916037   NA  FNDC3B  3   171916037
cg00000165  0.111512805 NA  1   91194674    0.542004657 NA  1   91194674
cg00000236  0.938647003 VDAC3   8   42263294    0.935845645 VDAC3   8   42263294
cg00000289  0.633428798 ACTN1   14  69341139    0.733281344 ACTN1   14  69341139
cg00000292  0.65556936  ATP2A1  16  28890100    0.358096457 ATP2A1  16  28890100
cg00000321  0.191278127 SFRP1   8   41167802    0.509407035 SFRP1   8   41167802
cg00000363  0.135746609 NA  1   230560793   0.120685168 NA  1   230560793
cg00000622  0.017719646 NIPA2   15  23034447    0.018611505 NIPA2   15  23034447
cg00000658  0.891647766 MAN1B1  9   139997924   0.904048927 MAN1B1  9   139997924
cg00000714  0.061226142 TSEN34  19  54695678    0.071011447 TSEN34  19  54695678
cg00000721  0.950283919 LRRC16A 6   25282779    0.952309685 LRRC16A 6   25282779
cg00000734  0.058200906 CNBP    3   128902377   0.05981105  CNBP    3   128902377
cg00000769  0.025102512 DDX55   12  124086477   0.028169739 DDX55   12  124086477

Eu preciso manter a primeira coluna "Composite Element REF" e, em seguida, selecione apenas o Beta_Value para que seja a coluna 2, depois a coluna 6 e assim por diante, e o número total de colunas é 1373

Obrigado

    
por Marwah Soliman 10.05.2017 / 20:42

4 respostas

1

[Isto é baseado em você - dados de amostra separados por espaço atual]

Você pode usar uma fatia de matriz em perl , selecionando os índices usando grep e alguns módulos aritméticos:

perl -anle 'print join "\t", $F[0], @F[grep { !($_ % 4 - 1) } 1..$#F]' file
    
por 11.05.2017 / 00:35
2

Sua pergunta está faltando um pouco de detalhes. Eu suponho que é algo encontrado em um arquivo de texto ou de um pipe.

O uso rápido e sujo de colunas de filtragem seria awk

Como sua pergunta é básica, vou me concentrar nisso:

$ echo "1,2,3,4,5,6,7,8,9,10" |awk -F, '{print $1 "," $2 "," $6 "," $10;}'
1,2,6,10

O -F, é necessário para declarar a vírgula como um separador de campo.
$0 seria toda a entrada de $1 da primeira coluna
$2 segundo | ...

Se os dados de entrada forem diferentes do seu exemplo, seja mais específico.

    
por 10.05.2017 / 21:28
1

Para uma solução baseada no awk:

awk -v FS=, -v OFS=, '{ printf $1; for(i=2;i<=NF;i+=4) { printf OFS $i }; print "";}' marwah.input
    
por 10.05.2017 / 23:16
0
sed -E 's/(,[^,]*)(,[^,]*){3}//g' yourfile.txt

manterá as colunas 1,2,6,10,14,18 e assim por diante. Espero que isso seja o que você espera.

    
por 10.05.2017 / 22:06