我需要帮助重新编号元素。我有一个输入文件,如下面的小样本(节点和元素可能在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
答案 0 :(得分:2)
您可以使用sed '/ELEMENT/,$s/^ \([0-9]\)/ 1\1/' test.msh
中的address range执行此操作:
/ELEMENT/,$
范围sed '/ELEMENT/,$s/ \([0-9]\)/ 1\1/g' test.msh
表示从第一次出现的&#34; ELEMENT&#34;直到文件结束。剩下的只是一个简单的substitution back reference,假设你的空白是一致的。
重新阅读您的问题,如果您想更改所有数字,或者只是更改每行上的第一个数字,您就不清楚了。如果你想要替换所有这些,这应该有效:
Enum.Parse(Type enumType, string value)
答案 1 :(得分:1)
awk digit=1 \
'adjust { $1 = digit $1 } \
/ELEMENT/ { adjust = 1 } \
{ print }'
如果进行调整,请将digit
连接到第一个元素。当ELEMENT
出现在一条线上时打开调整。打印一切。