2012-08-14 59 views
1

我与具有以下结构的一些NASTRAN输入文件的工作列:的emacs - 添加十进制值数

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,但似乎无法得到这个,因为我已经在例如工作如上所述。

在此先感谢您的帮助!

回答

2

在链接的问题它是可以做到的使用代替回答这样的,例如:

CM-%

^\([^,]*,[^,]*,[^,]*,[^,]*,\)\([^,]*\)\(.*\)

回报

\,(concat \1 (number-to-string (+ 1.653 (string-to-number \2))) \3)

请注意,在您的示例中,第二行有比第一行多的列(逗号)。可能是一个错字。

+0

是的,额外的评论应该是一个周期。感谢您的回应。如何构建这些表达式有没有很好的资源?我认为这是我的主要问题... – 2012-08-14 19:16:44

+0

可能有这样的资源,但我现在还不能告诉你。您可能想问问emacs帮助列表中有关这方面的人:http://news.gmane.org/gmane.emacs.help – Tom 2012-08-14 19:57:36

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)))))))