我正在处理一些具有以下结构的nastran输入文件:
GRID,1,,0.000,0.000,0.000,0
GRID,2,,0,000,1.653,0.000,0
我想要做的是为单个列添加特定值,例如,将1.653添加到第4列并获取:
GRID,1,,0.000,1.653,0.000,0
GRID,2,,0,000,3.306,0.000,0
我找到了一些示例,说明如何为integers执行此操作,但似乎无法使此功能适用于我上面概述的示例。
提前感谢您的帮助!
答案 0 :(得分:2)
使用链接问题中的答案,可以像这样替换,例如:
C-米 - %
^\([^,]*,[^,]*,[^,]*,[^,]*,\)\([^,]*\)\(.*\)
返回
\,(concat \1 (number-to-string (+ 1.653 (string-to-number \2))) \3)
请注意,在您的示例中,第二行的列(逗号)多于第一行。可能是一个错字。
答案 1 :(得分:0)
分别作为命令
(defun raise-column ()
(interactive "*")
(save-excursion
(save-restriction
(widen)
(goto-char (point-min))
(while (re-search-forward "^\\([^,]*,[^,]*,[^,]*,[^,]*,\\)\\([^,]*\\)\\(.*\\)" nil t 1)
(replace-match (concat (match-string-no-properties 1) (number-to-string (+ 1.653 (string-to-number (match-string-no-properties 2)))) (match-string-no-properties 3)))))))