[问题]在emacs中进行有条件替换?(已解决)

Vim、Emacs配置和使用
回复
头像
lazyquail
帖子: 117
注册时间: 2005-12-19 6:38
来自: 德国

[问题]在emacs中进行有条件替换?(已解决)

#1

帖子 lazyquail »

比如说我现在有两列数据:
1.5 Mbits
1.2 Mbits
234 Kbits
1.4 Mbits

我想要说:如果第二列数据是Kbits,那么就把第一列的数据除以1000,不知道这样的操作在emacs里怎么实现?
上次由 lazyquail 在 2006-08-01 19:20,总共编辑 1 次。
phenics
帖子: 6
注册时间: 2006-06-27 11:50

#2

帖子 phenics »

如果想要交互式的做的话, 好像没有什么好的方式, 除非自己写一个完成这样功能的命令.
头像
lazyquail
帖子: 117
注册时间: 2005-12-19 6:38
来自: 德国

#3

帖子 lazyquail »

嗯,如果能给出来一点线索也好,呵呵,现在感觉无从下手啊,期待~~
phenics
帖子: 6
注册时间: 2006-06-27 11:50

#4

帖子 phenics »

请问一定要用emacs来做吗, 这种事情好像用个shell更简单些, 把你的问题再具体的说说吧, 大家帮你想想看..
pluskid
帖子: 142
注册时间: 2005-11-05 23:18

#5

帖子 pluskid »

lazyquail 写了:嗯,如果能给出来一点线索也好,呵呵,现在感觉无从下手啊,期待~~
如果熟悉正则表达式和elisp的话,对于每一行,做一个匹配,前面一个是数字,后面一个 Kbits ,如果匹配成功,就
替换成前面一个除以一千以后的结果……
头像
5451vs5451
帖子: 345
注册时间: 2006-07-14 18:56
来自: Apple Valley, Planet Tux, Linux System

#6

帖子 5451vs5451 »

这种事情不是emacs的强项。

awk '/Kbits/{$1/=1000}{print $1}' data
头像
lazyquail
帖子: 117
注册时间: 2005-12-19 6:38
来自: 德国

#7

帖子 lazyquail »

这个问题后来我是用awk来解决的,也不算是特别的麻烦;现在了解到还可以利用emacs里定义macro来实现同样的功能,只是看别人演示过,没有自己做。虽然知道emacs不是什么功能都可以实现,但是能完成这样的编辑还是让我感觉到它强大的力量:)
正则表达式和elisp不熟,不过会找些资料来看。谢谢楼上的各位。
回复