如何将文本从一行添加到另一行的末尾?

史蒂芬·梅森

原始输出文件在更多信息中包含以下文本块:

 Projecting out rotations and translations

 Force Constants (Second Derivatives of the Energy) in [a.u.]
                             GX1         GY1         GZ1         GX2         GY2     
           GX1           0.6941232
           GY1           0.0187624   0.0156533
           GZ1          -0.1175495  -0.0980708   0.6144300
           GX2          -0.6074291  -0.0036667   0.0229726   0.6228918
           GY2           0.0069881  -0.0013581   0.0085087   0.0023190   0.0014047
           GZ2          -0.0437815   0.0085087  -0.0533084  -0.0145287  -0.0088007
           GX3          -0.0866941  -0.0150957   0.0945769  -0.0154627  -0.0093070
           GY3          -0.0257505  -0.0142952   0.0895621   0.0013477  -0.0000466
           GZ3           0.1613309   0.0895621  -0.5611216  -0.0084438   0.0002920
                             GZ2         GX3         GY3         GZ3     
           GZ2           0.0551377
           GX3           0.0583102   0.1021568
           GY3           0.0002920   0.0244027   0.0143418
           GZ3          -0.0018293  -0.1528871  -0.0898540   0.5629509

到目前为止,我已经设法隔离了需要的数据以及相关的标题,并使用[grep]和[awk](如下)将其打印到日志文件中:

#!/bin/bash

rm Hessian.log

for i  in *.out
do
grep -H -A16 "Force Constants (Second Derivatives of the Energy)" $i | tail -n +1 | awk ' NR == 2 {printf "     "" %10s %10s %10s %10s %10s \n", $2,$3,$4,$5,$6} NR == 3, NR == 11 {printf "%5s %10s %10s %10s %10s %10s\n", $2,$3,$4,$5,$6,$7} ' >> Hessian.log
echo "" >> Hessian.log
done

产生:

          GX1         GY1         GZ1         GX2         GY2     
GX1    0.6941232
GY1    0.0187624   0.0156533
GZ1   -0.1175495  -0.0980708   0.6144300
GX2   -0.6074291  -0.0036667   0.0229726   0.6228918
GY2    0.0069881  -0.0013581   0.0085087   0.0023190   0.0014047
GZ2   -0.0437815   0.0085087  -0.0533084  -0.0145287  -0.0088007
GX3   -0.0866941  -0.0150957   0.0945769  -0.0154627  -0.0093070
GY3   -0.0257505  -0.0142952   0.0895621   0.0013477  -0.0000466
GZ3    0.1613309   0.0895621  -0.5611216  -0.0084438   0.0002920
          GZ2         GX3         GY3         GZ3     
GZ2    0.0551377
GX3    0.0583102   0.1021568
GY3    0.0002920   0.0244027   0.0143418
GZ3   -0.0018293  -0.1528871  -0.0898540   0.5629509

但是,我试图移动最后四行,以便它们位于上面数据旁边的列中,并且其各自的标题(GZ2,GX3,GY3,GZ3)与其他标题位于同一行。简单地说,结果输出应该是9 * 9的数据矩阵,每一列和每一行都带有标签(如下所示)。

          GX1         GY1         GZ1         GX2         GY2         GZ2         GX3         GY3         GZ3
GX1    0.6941232
GY1    0.0187624   0.0156533
GZ1   -0.1175495  -0.0980708   0.6144300
GX2   -0.6074291  -0.0036667   0.0229726   0.6228918
GY2    0.0069881  -0.0013581   0.0085087   0.0023190   0.001404
GZ2   -0.0437815   0.0085087  -0.0533084  -0.0145287  -0.0088007   0.0551377
GX3   -0.0866941  -0.0150957   0.0945769  -0.0154627  -0.0093070   0.0583102   0.1021568
GY3   -0.0257505  -0.0142952   0.0895621   0.0013477  -0.0000466   0.0002920   0.0244027   0.0143418
GZ3    0.1613309   0.0895621  -0.5611216  -0.0084438   0.0002920  -0.0018293  -0.1528871  -0.0898540   0.5629509
史蒂芬·梅森

只需将特定的行和列分配为变量,然后使用echo将它们串联起来,就可以解决我自己的问题,当您知道答案时就很简单!

#!/bin/bash

cd FREQ/HF
rm Hessian.log


for i  in *.out
do
grep -H -A16 "Force Constants (Second Derivatives of the Energy)" $i | tail -n +1 >> Hessian.tmp

x=`awk ' NR == 2 {printf "     "" %10s %10s %10s %10s %10s \n", $2,$3,$4,$5,$6}' Hessian.tmp`
y=`awk ' NR == 12 {printf "%10s %10s %10s %10s \n", $2,$3,$4,$5}' Hessian.tmp`
a=`awk ' NR == 8 { printf "%5s %10s %10s %10s %10s %10s\n", $2,$3,$4,$5,$6,$7} ' Hessian.tmp`
b=`awk ' NR == 9 { printf "%5s %10s %10s %10s %10s %10s\n", $2,$3,$4,$5,$6,$7} ' Hessian.tmp`
c=`awk ' NR == 10 { printf "%5s %10s %10s %10s %10s %10s\n", $2,$3,$4,$5,$6,$7} ' Hessian.tmp`
d=`awk ' NR == 11 { printf "%5s %10s %10s %10s %10s %10s\n", $2, $3,$4,$5,$6,$7} ' Hessian.tmp`
e=`awk ' NR == 13 { printf "%10s", $3} ' Hessian.tmp`
f=`awk ' NR == 14 { printf "%10s %10s", $3, $4} ' Hessian.tmp`
g=`awk ' NR == 15 { printf "%10s %10s %10s", $3, $4,$5} ' Hessian.tmp`
h=`awk ' NR == 16 { printf "%10s %10s %10s %10s", $3, $4, $5,$6} ' Hessian.tmp`

echo "$x $y" >> Hessian.log
awk ' 
NR == 3, NR == 7 {printf "%5s %10s %10s %10s %10s %10s\n", $2,$3,$4,$5,$6,$7} ' Hessian.tmp >> Hessian.log
echo "$a $e" >> Hessian.log
echo "$b $f" >> Hessian.log
echo "$c $g" >> Hessian.log
echo "$d $h" >> Hessian.log
rm Hessian.tmp
echo "" >> Hessian.log
done

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将一行添加到另一行

来自分类Dev

Excel/Sheets - 将一行的内容添加到另一行的末尾?

来自分类Dev

如何在一个特定单词之前多次将信息从一行添加到另一行?

来自分类Dev

如何将一个文件中的一行一行添加到另一个文件中

来自分类Dev

如何在一行的末尾将点添加到原始man文件中?

来自分类Dev

将一行的子文本添加到同一行之前

来自分类Dev

如何将逗号分隔的ID从一行移动到另一行?

来自分类Dev

如何将PANDAS数据帧的一行添加到其余行?

来自分类Dev

查找并替换一行或添加到文件末尾

来自分类Dev

如何将删除操作添加到具有值id的每一行

来自分类Dev

如何将类添加到折线图中的每一行

来自分类Dev

如何将数组添加到二维数组中的每一行?

来自分类Dev

Vim:搜索模式并将文本添加到出现它的每一行的末尾

来自分类Dev

如何将文件(file2)中的10行添加到2行(file1)之后的另一行中?

来自分类Dev

git add将^ M添加到每一行的末尾

来自分类Dev

WPF DataGrid-将按钮添加到每一行的末尾

来自分类Dev

将值列表添加到选择中每一行的末尾

来自分类Dev

通过awk将条目添加到一行的末尾

来自分类Dev

使用相同的主键将一行中的金额添加到另一行中的金额

来自分类Dev

将&& \添加到文本文件上的每一行(最后一行除外)

来自分类Dev

Python:如何将(添加单个字符)附加到 txt 或 phylip 文件的第一行末尾

来自分类Dev

将一行DataFrame添加到另一DataFrame的优雅方法

来自分类Dev

如何通过单击另一个片段中的按钮将一行添加到ListView中?

来自分类Dev

如何将数据添加到dataGridView1的最后一行/最后一列?

来自分类Dev

如何将JLabel添加到JPanel中的每个第一行,第一个col

来自分类Dev

如何在列表中将文本从一行换成另一行

来自分类Dev

Unix-如何将文本附加到文件的每一行(标题行/第一行除外)

来自分类Dev

如何将一行一行地添加到python中的numpy 2d数组中?

来自分类Dev

ggvis:将size属性添加到一行

Related 相关文章

  1. 1

    如何将一行添加到另一行

  2. 2

    Excel/Sheets - 将一行的内容添加到另一行的末尾?

  3. 3

    如何在一个特定单词之前多次将信息从一行添加到另一行?

  4. 4

    如何将一个文件中的一行一行添加到另一个文件中

  5. 5

    如何在一行的末尾将点添加到原始man文件中?

  6. 6

    将一行的子文本添加到同一行之前

  7. 7

    如何将逗号分隔的ID从一行移动到另一行?

  8. 8

    如何将PANDAS数据帧的一行添加到其余行?

  9. 9

    查找并替换一行或添加到文件末尾

  10. 10

    如何将删除操作添加到具有值id的每一行

  11. 11

    如何将类添加到折线图中的每一行

  12. 12

    如何将数组添加到二维数组中的每一行?

  13. 13

    Vim:搜索模式并将文本添加到出现它的每一行的末尾

  14. 14

    如何将文件(file2)中的10行添加到2行(file1)之后的另一行中?

  15. 15

    git add将^ M添加到每一行的末尾

  16. 16

    WPF DataGrid-将按钮添加到每一行的末尾

  17. 17

    将值列表添加到选择中每一行的末尾

  18. 18

    通过awk将条目添加到一行的末尾

  19. 19

    使用相同的主键将一行中的金额添加到另一行中的金额

  20. 20

    将&& \添加到文本文件上的每一行(最后一行除外)

  21. 21

    Python:如何将(添加单个字符)附加到 txt 或 phylip 文件的第一行末尾

  22. 22

    将一行DataFrame添加到另一DataFrame的优雅方法

  23. 23

    如何通过单击另一个片段中的按钮将一行添加到ListView中?

  24. 24

    如何将数据添加到dataGridView1的最后一行/最后一列?

  25. 25

    如何将JLabel添加到JPanel中的每个第一行,第一个col

  26. 26

    如何在列表中将文本从一行换成另一行

  27. 27

    Unix-如何将文本附加到文件的每一行(标题行/第一行除外)

  28. 28

    如何将一行一行地添加到python中的numpy 2d数组中?

  29. 29

    ggvis:将size属性添加到一行

热门标签

归档