在更改主键时使用AWK合并两个文件

在更改主键时使用AWK合并两个文件,awk,Awk,我是一个初学者,所以很抱歉,如果这已经涵盖之前,但我似乎无法找到确切的我需要解决这个问题 我正在尝试合并两个包含多个数据的文件,并在使用AWK的过程中编辑主键 $ awk –f convert.awk File1 File2 > output 文件1: # node index, x-coord, y-coord, z-coord MESHPOINT_COORDINATES 1 0.40157080 0.01165580 0.00000000 2 5.33646366 -2.00

我是一个初学者,所以很抱歉,如果这已经涵盖之前,但我似乎无法找到确切的我需要解决这个问题

我正在尝试合并两个包含多个数据的文件,并在使用AWK的过程中编辑主键

$ awk –f convert.awk File1 File2 > output
文件1:

# node index, x-coord, y-coord, z-coord
MESHPOINT_COORDINATES
  1 0.40157080 0.01165580 0.00000000
  2 5.33646366 -2.00531643 0.00000000
  3 4.16797174 2.29403052 0.00000000
  4 5.41856053 1.77526867 0.00000000
  5 4.29752634 6.05020186 0.00000000
  6 5.54741904 5.46307875 0.00000000
  7 5.13640734 9.99623421 0.00000000
  8 -4.66339121 2.00580631 0.00000000
  9 -0.83190475 4.30646155 0.00000000
 10 -2.08191023 4.82606149 0.00000000

NODES_TRIANG1
  1 188 28 27
  2 259 71 11
  3 31 4 30
  4 45 6 44
  5 396 40 39
  6 277 227 241
  7 194 113 112
  8 249 125 124
  9 168 114 113
 10 144 19 18
文件2:

# node index, x-coord, y-coord, z-coord
MESHPOINT_COORDINATES
1  9.81601843  1.04888344  0.0
2  8.31348347  0.78329398  0.0
3  8.33745723  1.45922849  0.0
4  8.37867147  1.40693006  0.0
5  8.37033787  0.88985348  0.0

NODES_TRIANG1
1  2048  2041  1964
2  381  1072  64
3  381  380  1072
4  234  394  393
5  1978  1739  1753
期望输出:

MESHPOINT_COORDINATES
 1 0.40157080 0.01165580 0.00000000
 2 5.33646366 -2.00531643 0.00000000
 3 4.16797174 2.29403052 0.00000000
 4 5.41856053 1.77526867 0.00000000
 5 4.29752634 6.05020186 0.00000000
 6 5.54741904 5.46307875 0.00000000
 7 5.13640734 9.99623421 0.00000000
 8 -4.66339121 2.00580631 0.00000000
 9 -0.83190475 4.30646155 0.00000000
 10 -2.08191023 4.82606149 0.00000000
 11 9.81601843 1.04888344 0.0
 12 8.31348347 0.78329398 0.0
 13 8.33745723 1.45922849 0.0
 14 8.37867147 1.40693006 0.0
 15 8.37033787 0.88985348 0.0

NODES_TRIANG1
1 188 28 27
2 259 71 11
3 31 4 30
4 45 6 44
5 396 40 39
6 277 227 241
7 194 113 112
8 249 125 124
9 168 114 113
10 144 19 18
11 2048 2041 1964
12 381 1072 64
13 381 380 1072
14 234 394 393
15 1978 1739 1753
MESHPOINT_坐标和NODES_Triange1中的第一个数据是节点索引,它作为主键工作,因此不能相乘

使用AWK有什么方法可以做到这一点吗?

以下是我的解决方案:

awk '
    BEGIN{m="MESHPOINT_COORDINATES"; n="NODES_TRIANG1"} 
    $1!="#" && NF>0 {
        if ($1==m) {status=1; next}; 
        if ($1==n) {status=2; next}; 
        if (status==1) {i1++; t1[i1]=$2" "$3" "$4}; 
        if (status==2) {i2++; t2[i2]=$2" "$3" "$4}
    }
    END{
        print m; for (i=1; i<=i1; i++) print i, t1[i]; print ""; 
        print n; for (i=1; i<=i2; i++) print i, t2[i]
    }' File1 File2
awk'
开始{m=“网格点坐标”;n=“节点三角1”}
$1!=“#”&&NF>0{
如果($1==m){status=1;next};
如果($1==n){status=2;next};
如果(状态==1){i1++;t1[i1]=$2”“$3”“$4};
如果(状态==2){i2++;t2[i2]=$2”“$3”“$4}
}
结束{

打印m;用于(i=1;我会的,特别感谢您的努力和示例,请继续。对于示例,请您删除
,以便澄清,只需以文本形式发布简单示例并让我们知道。感谢您的回答,我将其编辑到文件的前10行和前5行。我有点困惑。您还希望我们更新节点吗在三角形中还是仅在三角形编号中?如果你将两个文件与两个网格合并,那么你还需要更新用于构建三角形的垂直编号。谢谢你的问题,对不起,我回答得有点晚。是的,我也需要更新它们。我自己做到了,我不想让你们为我做所有的工作。我感谢您的帮助。感谢您解决了我的问题。它工作得非常完美,我自己要花很长时间才能解决。也许您可以在您的一行代码中添加一些新行,以便于阅读,或者只是将其作为脚本编写?