如何打印文件的矩阵部分

如何打印文件的矩阵部分

我有一个包含字符串和浮点数的文件。我想加载此文件,然后打印文件的矩阵部分以访问矩阵元素。

文件.文本

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

输出

            -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

矩阵元素 [1,1] = -5.079679

矩阵元素 [5,1] = -2.706356

答案1

假设数据始终是您上面提供的方式。

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

这会打印包含 4 列数据的所有行,并清空第一列。

答案2

要向语法添加更多检查,您可以尝试如下操作。仅当第二个字段始终为负值时,这才有效。

awk -vOFS="\t" 'NF==4 && $2 ~ "^-[0-9]" {$1="";printf("%s\n", $0)}' matrix.txt
  • -vOFS(使用 TAB 作为输出字段分隔符)
  • 如果字段数为 4 并且第二个字段与正则表达式匹配。则将第一个字段留空并打印其余字段。
  • 如果您有类似的数字

    C 14.756939 1.208105 -0.169144

那么你可以使用$2 ~ "^-?[0-9]"wich 来检查正值。

相关内容