请教一个shell的写法

sh/bash/dash/ksh/zsh等Shell脚本
回复
liuke.forever
帖子: 102
注册时间: 2008-05-28 14:14

请教一个shell的写法

#1

帖子 liuke.forever » 2009-10-26 22:34

假设有一个字符串的值为[maplesnow][one_piece][260][jap_chn][HDTV][rv10].rmvb
我想要把其中的260这个数字的值取出来,有什么简单的方法?
maozhx
帖子: 14
注册时间: 2009-09-19 18:17

Re: 请教一个shell的写法

#2

帖子 maozhx » 2009-10-27 0:36

echo "[maplesnow][one_piece][260][jap_chn][HDTV][rv10].rmvb" | sed 's/.*\([0-9]\{3\}\).*/\1/g'
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 请教一个shell的写法

#3

帖子 aerofox » 2009-10-27 6:20

代码: 全选

echo "[maplesnow][one_piece][260][jap_chn][HDTV][rv10].rmvb" | sed 's/.*\[\([0-9]\+\)\].*/\1/'
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 请教一个shell的写法

#4

帖子 eexpress » 2009-10-27 8:55

\d{3}
● 鸣学
liuke.forever
帖子: 102
注册时间: 2008-05-28 14:14

Re: 请教一个shell的写法

#5

帖子 liuke.forever » 2009-10-27 9:01

aerofox 写了:

代码: 全选

echo "[maplesnow][one_piece][260][jap_chn][HDTV][rv10].rmvb" | sed 's/.*\[\([0-9]\+\)\].*/\1/'
Thanks!
sed 's/.*\[\([0-9]\+\)\].*/\1/表達式中,\+是什意思啊?
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 请教一个shell的写法

#6

帖子 aerofox » 2009-10-27 12:37

\+ 就是前面表达式(即[0-9])的1次或多次重复,跟 * 的作用类似,只是 * 号允许零次,这里要是换成 * 号,就可以匹配带空方括号的情形,你的字符串中应该不会有空方括号,所以也可以把 \+ 换成 *。
回复