LinuxBash,如何从另一个文件中添加两行

LinuxBash,如何从另一个文件中添加两行,linux,bash,Linux,Bash,在Ubuntu上工作,使用bash 我有两个文件。文件1包含原子及其在空间中位置的列表,如下所示: Si 1 14 24.094049488113697 22.249517320000000 5.4091803780000000 Si 2 14 -21.980209241886303 23.466150130000000 -6.4407518510000000 Si 3

在Ubuntu上工作,使用bash

我有两个文件。文件1包含原子及其在空间中位置的列表,如下所示:

Si               1        14
  24.094049488113697  22.249517320000000  5.4091803780000000
Si               2        14
 -21.980209241886303  23.466150130000000 -6.4407518510000000
Si               3        14
 -9.8193586518863060 -13.586795180000000 -14.608877780000000
Si               1
     22.31756370         22.24951732         5.409180378    
   29.0968650481      -12.2276780157      -7.08186598428    
   30498.6028163      -9406.07172249      -27393.4141429    
Si               2
    -23.75669503         23.46615013        -6.440751851    
  -28.7812217378       31.2316292200      -34.6050775946    
   40272.8675096      -40472.1160399      -1103.73416448    
Si               3
    -11.59584444        -13.58679518        -14.60887778    
   13.5323597131       42.5618815724       8.79048959706    
   6758.60998012      -9418.56231552       3386.31657511
Si               1        14
  24.094049488113697  22.249517320000000  5.4091803780000000
  29.0968650481      -12.2276780157      -7.08186598428
  30498.6028163      -9406.07172249      -27393.4141429    
Si               2        14
 -21.980209241886303  23.466150130000000 -6.4407518510000000
 -28.7812217378       31.2316292200      -34.6050775946    
  40272.8675096      -40472.1160399      -1103.73416448
Si               3        14
 -9.8193586518863060 -13.586795180000000 -14.608877780000000
  13.5323597131       42.5618815724       8.79048959706    
  6758.60998012      -9418.56231552       3386.31657511
这个文件会一直持续到所有原子都被描述出来

文件2非常相似,但包含更多信息。除了名称和位置外,它还包含有关速度和力的信息。看起来是这样的:

Si               1        14
  24.094049488113697  22.249517320000000  5.4091803780000000
Si               2        14
 -21.980209241886303  23.466150130000000 -6.4407518510000000
Si               3        14
 -9.8193586518863060 -13.586795180000000 -14.608877780000000
Si               1
     22.31756370         22.24951732         5.409180378    
   29.0968650481      -12.2276780157      -7.08186598428    
   30498.6028163      -9406.07172249      -27393.4141429    
Si               2
    -23.75669503         23.46615013        -6.440751851    
  -28.7812217378       31.2316292200      -34.6050775946    
   40272.8675096      -40472.1160399      -1103.73416448    
Si               3
    -11.59584444        -13.58679518        -14.60887778    
   13.5323597131       42.5618815724       8.79048959706    
   6758.60998012      -9418.56231552       3386.31657511
Si               1        14
  24.094049488113697  22.249517320000000  5.4091803780000000
  29.0968650481      -12.2276780157      -7.08186598428
  30498.6028163      -9406.07172249      -27393.4141429    
Si               2        14
 -21.980209241886303  23.466150130000000 -6.4407518510000000
 -28.7812217378       31.2316292200      -34.6050775946    
  40272.8675096      -40472.1160399      -1103.73416448
Si               3        14
 -9.8193586518863060 -13.586795180000000 -14.608877780000000
  13.5323597131       42.5618815724       8.79048959706    
  6758.60998012      -9418.56231552       3386.31657511
我的问题是:文件1有正确的坐标,但没有所需的其他信息(速度和力)。如何从每个原子(第3和第4行、第7和第8行、第11和第12行等)中提取两行,并将它们插入相应原子的坐标下,以便输出如下所示:

Si               1        14
  24.094049488113697  22.249517320000000  5.4091803780000000
Si               2        14
 -21.980209241886303  23.466150130000000 -6.4407518510000000
Si               3        14
 -9.8193586518863060 -13.586795180000000 -14.608877780000000
Si               1
     22.31756370         22.24951732         5.409180378    
   29.0968650481      -12.2276780157      -7.08186598428    
   30498.6028163      -9406.07172249      -27393.4141429    
Si               2
    -23.75669503         23.46615013        -6.440751851    
  -28.7812217378       31.2316292200      -34.6050775946    
   40272.8675096      -40472.1160399      -1103.73416448    
Si               3
    -11.59584444        -13.58679518        -14.60887778    
   13.5323597131       42.5618815724       8.79048959706    
   6758.60998012      -9418.56231552       3386.31657511
Si               1        14
  24.094049488113697  22.249517320000000  5.4091803780000000
  29.0968650481      -12.2276780157      -7.08186598428
  30498.6028163      -9406.07172249      -27393.4141429    
Si               2        14
 -21.980209241886303  23.466150130000000 -6.4407518510000000
 -28.7812217378       31.2316292200      -34.6050775946    
  40272.8675096      -40472.1160399      -1103.73416448
Si               3        14
 -9.8193586518863060 -13.586795180000000 -14.608877780000000
  13.5323597131       42.5618815724       8.79048959706    
  6758.60998012      -9418.56231552       3386.31657511
(坐标来自第一个文件,但速度和力来自第二个文件)

我的方法是将两个想要的文件从文件2中分离出来,然后尝试将它们添加到第一个文件的坐标之下。不幸的是,我还没有找到这样做的方法

多谢各位

awk 'FNR==NR { getline a[$1$2]; next; } ($1$2 in a){ print $0; print a[$1$2]; getline; getline; print; getline; print }' file1 file2
说明:

FNR==NR检查我们是否在第一个文件中

是吗?保存数组中的下一行

没有?我们在第二个文件中

(a中的$0)检查数组中是否存在标题行(文件1中的atom=文件2中的atom)

是吗?打印所有内容:)

输入: 文件1

文件2

输出:

Si  1   14
24  22  5
y   y   y
z   z   z   
Si  2   14
21  23  6
y   y   y
z   z   z
Si  3   14
9   13  14
y   y   y
z   z   z

编辑:添加了输出并告诉了我到目前为止所做的尝试。谢谢你的回答Joda。我无法使用您提供的代码获得任何输出。通过删除($0 in a)部分,我得到了输出,但它只是从第二行开始每隔四行删除一行。所以我得到的不是si14xyyzz而是:si14yyzz