VIM请教:文本中有一些科学计数法的数字,想对某些数字同时乘以"-2",肿么办?

Vim、Emacs配置和使用
回复
xhwubai
帖子: 20
注册时间: 2010-04-17 20:17

VIM请教:文本中有一些科学计数法的数字,想对某些数字同时乘以"-2",肿么办?

#1

帖子 xhwubai » 2011-07-08 22:41

如果是所有数字全部乘以-2, lh-n 兄提供了很好很强大的代码:
:%s/\<-\=\d\.\d\+E-\d*\>/\=-2*str2float(submatch(0))/g

如果是"L="后面的第一个数字乘以-2,该肿么办???

Exam:
STDEV 2.94873E-13 L=1.82393E-13 1.96625E-13 2.8074E-13 2.79168E-13 2.95763E-13 2.16372E-13 L=1.77095E-13 1.90607E-13 4.07321E-13 2.52867E-13 3.97069E-13 2.4031E-13 L=7.21644E-14 1.44322E-13 3.42594E-13 4.42298E-13 2.87842E-13 2.58782E-13 L=2.75495E-13
A Median JLEAB_P50N1SA_6K -3.55E-12 -4.114E-12 -3.541E-12 -3.713E-12 -4.023E-12 -3.574E-12 -3.936E-12 L=-3.733E-12 -3.614E-12 -4.288E-12 -3.741E-12 -3.994E-12 -3.588E-12 L=-3.648E-12 -3.455E-12 -4.145E-12 -3.775E-12 -3.861E-12 -3.828E-12 L=-4.221E-12
上次由 xhwubai 在 2011-07-21 22:59,总共编辑 5 次。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: VIM:文本中有一些科学计数法的数字,想对这些数字同时乘以"-1",该怎么做?

#2

帖子 lilydjwg » 2011-07-08 22:48

两个正则替换就可以了。没时间了,就不帮你写出来了。
头像
Fermat618
帖子: 728
注册时间: 2008-12-28 16:01

Re: VIM:文本中有一些科学计数法的数字,想对这些数字同时乘以"-1",该怎么做?

#3

帖子 Fermat618 » 2011-07-09 9:49

lilydjwg 写了:两个正则替换就可以了。没时间了,就不帮你写出来了。
我不会,你有时间了写出来看看吧。

数字不多嘛,我觉得还是把那样数字复制出来,并且粘贴到 Matlab 之类的软件内,集体乘以-2, 再拿出来比较直观。
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
lh-n
帖子: 40
注册时间: 2009-02-23 15:52

Re: VIM请教:文本中有一些科学计数法的数字,想对这些数字同时乘以"-2",该怎么做?

#4

帖子 lh-n » 2011-07-09 11:01

我替lilydjwg写:

代码: 全选

:%s/-\=\d\.\d\+E\S*\ze\s/\=-2*str2float(submatch(0))/g

:%s/e/E/g
lh-n
帖子: 40
注册时间: 2009-02-23 15:52

Re: VIM请教:文本中有一些科学计数法的数字,想对这些数字同时乘以"-2",该怎么做?

#5

帖子 lh-n » 2011-07-09 11:05

有个小错误,要确保每行最后有个才空格管用。
lh-n
帖子: 40
注册时间: 2009-02-23 15:52

Re: VIM请教:文本中有一些科学计数法的数字,想对这些数字同时乘以"-2",该怎么做?

#6

帖子 lh-n » 2011-07-09 11:14

改了下,用这个更好一些:

代码: 全选

:%s/\<-\=\d\.\d\+E-\d*\>/\=-2*str2float(submatch(0))/g
xhwubai
帖子: 20
注册时间: 2010-04-17 20:17

Re: VIM请教:文本中有一些科学计数法的数字,想对这些数字同时乘以"-2",该怎么做?

#7

帖子 xhwubai » 2011-07-12 7:05

:em11
非常感谢各位!!!受教了!!!
lh-n
帖子: 40
注册时间: 2009-02-23 15:52

Re: VIM请教:文本中有一些科学计数法的数字,想对某些数字同时乘以"-2",肿么办?

#8

帖子 lh-n » 2011-07-22 23:00

代码: 全选

%s/L=\zs\<-\=\d\.\d\+E-\d*\>/\=-2*str2float(submatch(0))/g
xhwubai
帖子: 20
注册时间: 2010-04-17 20:17

Re: VIM请教:文本中有一些科学计数法的数字,想对某些数字同时乘以"-2",肿么办?

#9

帖子 xhwubai » 2011-07-22 23:08

lh-n 写了:

代码: 全选

%s/L=\zs\<-\=\d\.\d\+E-\d*\>/\=-2*str2float(submatch(0))/g
欧,,,卖糕滴,,, lh-n兄,U R my super star!!!

不过,这命令对负数好像没起作用???
yx_wh
帖子: 31
注册时间: 2010-02-06 14:55

Re: VIM请教:文本中有一些科学计数法的数字,想对某些数字同时乘以"-2",肿么办?

#10

帖子 yx_wh » 2011-08-02 0:26

代码: 全选

%s/L=\zs-\=\d\.\d\+E-\d*\>/\=-2*str2float(submatch(0))/g 
回复