匹配正则并执行的脚本

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

匹配正则并执行的脚本

#1

帖子 eexpress » 2009-03-10 13:38

鼠标选择文字,根据不同的正则匹配,执行不同的命令。这里是查阅ip,打开地址,和缺省的翻译。
加到热键:Super+A

代码: 全选

#!/bin/bash

l=`xsel -o`
reg[0]="^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"
reg[1]="^http://[^\ ]*$"
#reg[2]="^[A-Za-z]*$"
cmd[0]="~/应用/脚本/ip-show.bash"
cmd[1]="~/应用/脚本/opera-open-file $l"
#cmd[2]="~/应用/脚本/sdcv-notify-send.bash"
n=${#reg[*]}
#for i in ${reg[*]}
for i in `seq $n`
do
#echo $l
#echo ${reg[$i-1]}
if [[ $l =~ ${reg[$i-1]} ]]; then
#echo ${cmd[$i-1]}
eval ${cmd[$i-1]}
exit
fi
done
#default cmd
~/应用/脚本/sdcv-notify-send.bash
反正glipper 的Actions不对头。klipper的别人也说不对。
可能是正则匹配,是使用的语法内嵌正则库,导致表达式不需要转义那些括号类的。使用这2个软件的,可参考如上脚本的写法试试。
● 鸣学
头像
c\nc
帖子: 231
注册时间: 2007-12-25 12:51
送出感谢: 0
接收感谢: 0

Re: 匹配正则并执行的脚本

#2

帖子 c\nc » 2009-03-10 14:40

加个判断怎么样? xsel 还有 3 个参数:

-p, --primary
operate on the PRIMARY selection (default).

-s, --secondary
operate on the SECONDARY selection.

-b, --clipboard
operate on the CLIPBOARD selection.
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 匹配正则并执行的脚本

#3

帖子 eexpress » 2009-03-10 14:43

The ICCCM defines these as follows:

"The selection named by the atom PRIMARY is used for all commands that take only a single argument and is the principal means of communication between clients that use the selection mechanism.

The selection named by the atom SECONDARY is used:
As the second argument to commands taking two arguments (for
example, "exchange primary and secondary selections")
As a means of obtaining data when there is a primary selection and
the user does not want to disturb it
加参数?我根本不使用ctrl-c的。那clipboard没意义。而secondary被废弃了的。

现在是没法监视剪贴板而已。不归dbus管理。在瞎看。
● 鸣学
头像
lerosua
论坛版主
帖子: 8455
注册时间: 2007-11-29 9:41
送出感谢: 0
接收感谢: 0
联系:

Re: 匹配正则并执行的脚本

#4

帖子 lerosua » 2009-03-10 14:57

ee尽在折腾
头像
zhan
帖子: 1880
注册时间: 2005-08-15 0:04
来自: 南7技校
送出感谢: 0
接收感谢: 0
联系:

Re: 匹配正则并执行的脚本

#5

帖子 zhan » 2009-03-10 15:28

依依的哲学就是生命在于折腾,不仅自己折腾,还会拉着别人折腾。。。
lerosua 写了:ee尽在折腾
飞得高,飞得低,学习再学习,多少大秘密!
http://zhan.blog.ubuntu.org.cn
头像
roylez
论坛版主
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海
送出感谢: 0
接收感谢: 1 次

Re: 匹配正则并执行的脚本

#6

帖子 roylez » 2009-03-10 17:42

我的python脚本放在那里好久了,还带手机归属地查询呢,ee就喜欢造新轮子。
弄个dropbox空间来备份文件或者做私人代码服务器
配置:[url]git://github.com/roylez/dotfiles.git[/url]
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info
头像
greco
帖子: 2487
注册时间: 2007-04-06 10:24
来自: ~/Shanghai
送出感谢: 0
接收感谢: 0

Re: 匹配正则并执行的脚本

#7

帖子 greco » 2009-03-10 18:46

这有啥用,麻不麻烦

好好的正则就被你们这么折腾
http://silenceisdefeat.com/~greco

代码: 全选

''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 匹配正则并执行的脚本

#8

帖子 eexpress » 2009-03-11 9:20

roylez, 你的py监视剪贴板更新了?只有做到这点,才可以代替glipper/klipper里面的正则动作。
要不,何用啊。
再说py的,怎么会比bash的简单/通用的。还不是你不用bash。lol
我这用在fvwm的,整合热键的。


btw: 不利用系统已经带了的命令,才叫重新造轮子呢,比如py。呵呵。
● 鸣学
头像
roylez
论坛版主
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海
送出感谢: 0
接收感谢: 1 次

Re: 匹配正则并执行的脚本

#9

帖子 roylez » 2009-03-11 9:40

你见过哪个发行版默认不带python的?

监视剪切板干什么?没必要为这个又搞个daemon,就是说你那语音控制的,也是一样。我不喜欢太多daemon。原来弄过perlbox的,玩过一次就烦了。

btw,发现一好玩的。scim输入itime,idate。
弄个dropbox空间来备份文件或者做私人代码服务器
配置:[url]git://github.com/roylez/dotfiles.git[/url]
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info
头像
bones7456
论坛版主
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
送出感谢: 0
接收感谢: 8 次
联系:

Re: 匹配正则并执行的脚本

#10

帖子 bones7456 » 2009-03-11 10:02

zhan 写了:依依的哲学就是生命在于折腾,不仅自己折腾,还会拉着别人折腾。。。
lerosua 写了:ee尽在折腾
ee怎么不听胡主席的话啊?
关注我的blog: ε==3
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 匹配正则并执行的脚本

#11

帖子 eexpress » 2009-03-11 10:15

怎么说到缺省带不带的问题了。而且这点上py肯定比不过bash/perl的啊。perlbox我去看看。

监视剪切板,是为了剩下按热键。有好处的。有想不到的好处的。

scim的,我早总结过啊。

btw: 其他说折腾的,都是不会正则和shell的。可以无视。
● 鸣学
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京
送出感谢: 0
接收感谢: 2 次

Re: 匹配正则并执行的脚本

#12

帖子 aBiNg » 2009-03-11 10:41

代码: 全选

#!/bin/bash

sel=`xsel -o`
if [ $sel =~ "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" ]; then
    . ~/应用/脚本/ip-show.bash
elif [ $sel =~ "^http://[^\ ]*$" ]; then
    . ~/应用/脚本/opera-open-file $sel
fi

~/应用/脚本/sdcv-notify-send.bash
搞那复杂做什么啊。
回复

回到 “Shell脚本”