Como imprimir a parte da matriz de um arquivo [closed]

0

Eu tenho um arquivo que possui strings e números flutuantes. Eu quero carregar este arquivo e, em seguida, imprimir a parte da matriz do arquivo para acessar os elementos da matriz.

file.text

laimfnllvbms
ksdvkdv=ksmgfgmf
kfdjdj=4o53024

0 10 

   C        -5.079679       -0.614855        0.628813
   O        -5.090496       -1.535841       -0.185383
   N         -4.068243       -0.015776        1.175251
   H        -4.152798        0.774414        1.777298
   C        -2.706356       -0.272545        0.750101
   H        -2.712997       -0.826000       -0.177284
   C        -2.003241        1.167450        0.660391
   H       -1.795397        1.550152        1.682476
   H       -2.809862        1.800846        0.233202
   C        -0.756939        1.208105       -0.169144

saída

            -5.079679       -0.614855        0.628813
            -5.090496       -1.535841       -0.185383
             -4.068243       -0.015776        1.175251
            -4.152798        0.774414        1.777298
            -2.706356       -0.272545        0.750101
            -2.712997       -0.826000       -0.177284
            -2.003241        1.167450        0.660391
           -1.795397        1.550152        1.682476
           -2.809862        1.800846        0.233202
            -0.756939        1.208105       -0.16914

elemento da matriz [1,1] = -5,079679

elemento da matriz [5,1] = -2,706356

    
por alloppp 16.09.2016 / 20:10

2 respostas

1

Supondo que os dados são sempre da maneira que você forneceu acima.

awk 'NF == 4 {$1="";print}' matrix.txt 

Isto imprime todas as linhas com 4 colunas de dados e apaga a primeira coluna.

    
por 16.09.2016 / 20:31
0

Para adicionar mais verificações à sintaxe, você pode tentar algo como o seguinte. Isso funcionará somente se o segundo campo tiver sempre um valor negativo.

awk -vOFS="\t" 'NF==4 && $2 ~ "^-[0-9]" {$1="";printf("%s\n", $0)}' matrix.txt
  • -vOFS (Use TAB como separador de campos de saída)
  • Se # de campos for 4 e o segundo campo corresponder ao regex ..., anule o primeiro campo e imprima o restante dos campos.
  • No caso de você ter números como

    C 14.756939 1.208105 -0.169144

então você pode usar $2 ~ "^-?[0-9]" , que também irá verificar valores positivos.

    
por 16.09.2016 / 21:01

Tags