shell编程怎么抽取匹配正则表达式的字符串?

比如说现在有一个字符串helloworld20140501.txt我想从中读取这里面的20140501这一段然后把它赋给其他变量,能否用正则表达式来完成这样的工作呢?如果... 比如说现在有一个字符串 helloworld20140501.txt 我想从中读取这里面的20140501这一段然后把它赋给其他变量,能否用正则表达式来完成这样的工作呢?如果可以的话,应该怎么做?好像一般用grep只能匹配整行是吗?
我最初的目的是想重命名一批文件,从原文件名里面抽取出表示日期的数字,然后进行处理后作为新文件名。修改
展开
 我来答
albumin
2014-05-03 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2391万
展开全部
a=$( expr 'helloworld20140501.txt' : '.*\([0-9]\{8\}\).*' )
echo $a
linux shell 中可以将命令的结果赋值给变量,$(命令)这种格式将返回命令执行后的结果字符串
上面命令执行后,变量a的值是20140501
a=`echo 'helloworld20140501.txt'|sed 's/.*\([0-9]\{8\}\).*/\1/'`
这个命令作用也是一样,变量a被赋值为20140501
追问
嗯,受教了,多谢!
另外请问有没有专门讲这些的教材呢?我看了一些讲shell编程的书,里面没有提到expr命令的用法。。
追答
linux命令起码成百上千,每个命令最少有十来个参数,一本书肯定讲不完,只有用时多看man文档
如果只是学习文本处理的话,有本书好像名字是 “sed&awk"之类的,可以参考一下
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式