Как преобразовать формат GJF в формат XYZ?

Формат gjf выглядит следующим образом:

%chk=test.chk
# hf/3-21g geom=connectivity

Title Card Required

0 1
 C                  0.53424883    1.46721985   -0.02620215
 H                  0.89090326    0.45840985   -0.02620215
 H                  0.89092167    1.97161804    0.84744935
 H                  0.89092167    1.97161804   -0.89985366
 H                 -0.53575117    1.46723303   -0.02620215

 1 2 1.0 3 1.0 4 1.0 5 1.0
 2
 3
 4
 5

и формат xyz выглядит следующим образом:

5     # this is the number of atoms

 C                  0.53424883    1.46721985   -0.02620215
 H                  0.89090326    0.45840985   -0.02620215
 H                  0.89092167    1.97161804    0.84744935
 H                  0.89092167    1.97161804   -0.89985366
 H                 -0.53575117    1.46723303   -0.02620215
0
задан 27 October 2019 в 21:04

2 ответа

Я написал что-то вроде ниже, и это работает, но это почти глупо

#!/bin/bash 

 for file_name in *.gjf; do

 grep '[0-9]\.[0-9][0-9]' $file_name  | cat > tmp

 cp tmp tmp2 

 wc -l < tmp > ${file_name%.*}.xyz

 echo "" >> ${file_name%.*}.xyz

 cat tmp2 >> ${file_name%.*}.xyz

 rm tmp tmp2 

 done
0
ответ дан 27 October 2019 в 23:39

Это тоже хорошо, но не всегда!

#!/bin/bash

for file_name in *.gjf; do
tail -1 $file_name  > ${file_name%.*}.xyz
echo"" >> ${file_name%.*}.xyz
grep '[0-9]\.[0-9][0-9]' $file_name >> ${file_name%.*}.xyz
done
0
ответ дан 29 October 2019 в 14:16

Другие вопросы по тегам:

Похожие вопросы: