文字列と浮動小数点を含むファイルがあります。このファイルをロードしてから、ファイルの行列部分を印刷して行列要素にアクセスしたいと思います。
ファイル.テキスト
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を使用して正の値を確認できます。