ファイルのマトリックス部分を印刷する方法

ファイルのマトリックス部分を印刷する方法

文字列と浮動小数点を含むファイルがあります。このファイルをロードしてから、ファイルの行列部分を印刷して行列要素にアクセスしたいと思います。

ファイル.テキスト

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

文法にさらにチェックを追加するには、以下を試してください。これは、2番目のフィールドが常に負の場合にのみ機能します。

awk -vOFS="\t" 'NF==4 && $2 ~ "^-[0-9]" {$1="";printf("%s\n", $0)}' matrix.txt
  • -vOFS(TABを出力フィールド区切り文字として使用)
  • フィールド数が 4 で、2 番目のフィールドが正規表現と一致する場合です。次に、最初のフィールドを空白のまま残りのフィールドを印刷します。
  • 次の数字がある場合

    C 14.756939 1.208105 -0.169144

$2 ~ "^-?[0-9]"その後、wichを使用して正の値を確認できます。

関連情報