gpt4 book ai didi

python - awk(或 sed/python)跳过行以重新编号列

转载 作者:太空宇宙 更新时间:2023-11-04 00:39:42 25 4
gpt4 key购买 nike

我需要帮助重新编号元素。我有一个输入文件,如下面的小样本(节点和元素可能有 1000 个)。我需要一个跳过所有节点并从第一个元素开始的代码,此时我需要向所有元素添加一个整数。 IE: 元素 658 = 1658, 659=1659, 等等....一切都需要输出到一个新文件中,唯一的区别是元素的重新编号。我尝试使用下面的 awk 命令执行此操作,但无法完全理解。有人可以帮忙吗? python 好还是 sed 好?谢谢

*NODE, NSET=Nvolc
1,6.106226635438e-16,0.000000000000e+00,1.000000000000e+01
2,6.106226635438e-16,0.000000000000e+00,-1.000000000000e+01
3,5.481726184087e-16,0.000000000000e+00,9.000000000000e+00
*ELEMENT, TYPE=C3D4, ELSET=Evolc
658, 58, 193, 148, 113
659, 154, 81, 215, 119
660, 228, 58, 148, 36
661, 7, 131, 146, 302

代码:

    awk 'NR==1{print}' test.msh > test2.msh | nawk -v number=500 'NR <= 2 { next } BEGIN{FS=OFS=","} {$1=number;print;number++;print}' test.msh > test2.msh

最佳答案

您可以使用 address rangesed 中执行此操作:

sed '/ELEMENT/,$s/^   \([0-9]\)/   1\1/' test.msh

范围 /ELEMENT/,$ 表示从第一次出现的“ELEMENT”开始搜索,直到文件末尾。剩下的只是一个简单的substitutionback reference假设您的空格是一致的。

重新阅读您的问题,您不清楚是要更改所有数字,还是只更改每行的第一个数字。如果您想替换所有这些,这应该可行:

sed '/ELEMENT/,$s/ \([0-9]\)/ 1\1/g' test.msh

关于python - awk(或 sed/python)跳过行以重新编号列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42402877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com