当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 请教 bash 里怎么才能用原始的正则表达式?[已解决]
帖子发表于 : 2015-11-07 15:52 

注册: 2010-07-13 17:04
帖子: 96
送出感谢: 15
接收感谢: 0 次
#!/usr/bin/env bash
find . -regex ".*\(\.\(ak\|au\|ax\)\|~\)"

如上,开始还可以,后来文件类型多了,这个就太长了,也不容易读。
后面这个正则表达式,怎么能让它像 perl 或 javascript 里那样简单,不要这么多转义?
我希望表达式部分能像下面这样用,请教要怎么做才能达到?

#!/usr/bin/env bash
find . -regex /.*\.(ak|au|ax)|~/


最后由 alober 编辑于 2015-11-07 22:41,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 请教 bash 里怎么才能用原始的正则表达式?
帖子发表于 : 2015-11-07 17:29 
头像

注册: 2010-04-10 16:14
帖子: 2903
系统: Arch Linux
送出感谢: 8
接收感谢: 69
用单引号


_________________
dz,U,EIS. cies.
dz-cies@github
小香猪杀手@cc98.org


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 请教 bash 里怎么才能用原始的正则表达式?
帖子发表于 : 2015-11-07 19:05 

注册: 2010-07-13 17:04
帖子: 96
送出感谢: 15
接收感谢: 0 次
susbarbatus 写道:
用单引号

下面是在我的电脑上运行的结果,使用了单引号,但没有查到。是我哪里写错了?能请给出示范代码吗?

alober@pc:~/a$ ls
run.sh start.sh
alober@pc:~/a$ find . -regex '.*\.(sh|txt)|~'
alober@pc:~/a$


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 请教 bash 里怎么才能用原始的正则表达式?
帖子发表于 : 2015-11-07 21:36 
头像

注册: 2011-09-13 10:31
帖子: 157
送出感谢: 1
接收感谢: 17
找的是这个?
代码:
-regextype type
Changes the regular expression syntax understood by  -regex  and -iregex tests which occur later on the command line.  Currently-implemented types are emacs (this is the default),  posix-awk, posix-basic, posix-egrep and posix-extended.



_________________
评价: 3.7% alober
 
页首
 用户资料  
 
5 楼 
 文章标题 : Re: 请教 bash 里怎么才能用原始的正则表达式?
帖子发表于 : 2015-11-07 21:56 
头像

注册: 2010-04-10 16:14
帖子: 2903
系统: Arch Linux
送出感谢: 8
接收感谢: 69
正则有很多实现,find 的正则默认是 emacs 的,语法不太一样;比较常见的比如 egrep 风格的,可以这样指定:
代码:
find . -regextype "posix-egrep" -regex '.*\.(sh|txt)|~'


P.S. 我自己试了一下,发现用这里单引号和双引号没什么区别,shell 的 Expansion 在这个位置似乎不生效?

P.P.S. 我没看懂最后的 |~ 具体是要做什么?


_________________
dz,U,EIS. cies.
dz-cies@github
小香猪杀手@cc98.org



_________________
评价: 3.7% alober
 
页首
 用户资料  
 
6 楼 
 文章标题 : Re: 请教 bash 里怎么才能用原始的正则表达式?
帖子发表于 : 2015-11-07 22:40 

注册: 2010-07-13 17:04
帖子: 96
送出感谢: 15
接收感谢: 0 次
duguyipiao 写道:
找的是这个?
代码:
-regextype type
Changes the regular expression syntax understood by  -regex  and -iregex tests which occur later on the command line.  Currently-implemented types are emacs (this is the default),  posix-awk, posix-basic, posix-egrep and posix-extended.

谢谢,就是这个。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 0 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译