免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5756 | 回复: 6
打印 上一主题 下一主题

[文本处理] "=~"是什么含义吗? [复制链接]

论坛徽章:
22
CU大牛徽章
日期:2013-09-18 15:22:06白羊座
日期:2014-04-14 22:56:32午马
日期:2014-05-16 17:18:08巳蛇
日期:2014-05-30 20:53:19寅虎
日期:2014-06-03 10:53:34未羊
日期:2014-08-12 22:15:31神斗士
日期:2015-11-20 17:26:2515-16赛季CBA联赛之浙江
日期:2016-03-15 18:27:4215-16赛季CBA联赛之同曦
日期:2016-03-22 09:21:0115-16赛季CBA联赛之北控
日期:2017-03-26 21:47:12技术图书徽章
日期:2014-04-03 16:47:26摩羯座
日期:2014-03-25 23:51:36
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-12 23:11 |只看该作者 |倒序浏览
今天看到shell里面有这么=~符号,但是找来找去也没找到出处(貌似在ABS里面也没有),好像跟正则表达式有关
  1. [[ ! ${DISTRO} =~ (precise|saucy|trusty|7.0|wheezy|sid|testing|jessie|f19|f20|rhel6) ]]
复制代码
这个符号是什么意思吗?从哪里能够找到最新的符号解释文档?

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
2 [报告]
发表于 2014-03-13 01:15 |只看该作者
[[ ! ${DISTRO} =~ (precise|saucy|trusty|7.0|wheezy|sid|testing|jessie|f19|f20|rhel6) ]]
字符串$DISTRO中不含有precise|saucy|trusty|7.0|wheezy|sid|testing|jessie|f19|f20|rhel6这11个字符串中的任何一个

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
3 [报告]
发表于 2014-03-13 08:09 |只看该作者
这个是具体解释:
  1. An additional binary operator, ‘=~’, is available, with the same precedence as ‘==’ and ‘!=’. When it is used, the string to the right of the operator is considered an extended regular expression and matched accordingly (as in regex3)). The return value is 0 if the string matches the pattern, and 1 otherwise. If the regular expression is syntactically incorrect, the conditional expression’s return value is 2. If the shell option nocasematch (see the description of shopt in The Shopt Builtin) is enabled, the match is performed without regard to the case of alphabetic characters. Any part of the pattern may be quoted to force it to be matched as a string. Substrings matched by parenthesized subexpressions within the regular expression are saved in the array variable BASH_REMATCH. The element of BASH_REMATCH with index 0 is the portion of the string matching the entire regular expression. The element of BASH_REMATCH with index n is the portion of the string matching the nth parenthesized subexpression.
复制代码
如果你看过我的另一个帖子的话,就对=~ 不会陌生了。

http://bbs.chinaunix.net/thread-4125147-1-1.html

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
4 [报告]
发表于 2014-03-13 09:12 |只看该作者
它是bash内建测试命令的操作符,所以要在bash man里找:
man bash:
  1.        [[ expression ]]
  2.               Return a status of 0 or 1 depending on the evaluation of the conditional expression expression.  Expres-
  3.               sions are composed of the primaries described below under CONDITIONAL EXPRESSIONS.  Word  splitting  and
  4.               pathname  expansion are not performed on the words between the [[ and ]]; tilde expansion, parameter and
  5.               variable expansion, arithmetic expansion, command substitution, process substitution, and quote  removal
  6.               are performed.  Conditional operators such as -f must be unquoted to be recognized as primaries.

  7.               When used with [[, The < and > operators sort lexicographically using the current locale.

  8.               When  the  == and != operators are used, the string to the right of the operator is considered a pattern
  9.               and matched according to the rules described below under Pattern Matching.  If the shell option  nocase-
  10.               match  is  enabled,  the  match  is  performed without regard to the case of alphabetic characters.  The
  11.               return value is 0 if the string matches (==) or does not match (!=) the pattern, and 1  otherwise.   Any
  12.               part of the pattern may be quoted to force it to be matched as a string.

  13.               An  additional  binary  operator,  =~,  is available, with the same precedence as == and !=.  When it is
  14.               used, the string to the right of the operator is considered an extended regular expression  and  matched
  15.               accordingly (as in regex(3)).  The return value is 0 if the string matches the pattern, and 1 otherwise.
  16.               If the regular expression is syntactically incorrect, the conditional expression鈥檚 return  value  is  2.
  17.               If  the shell option nocasematch is enabled, the match is performed without regard to the case of alpha-
  18.               betic characters.  Any part of the pattern may be quoted to force it to be matched as  a  string.   Sub-
  19.               strings  matched  by  parenthesized  subexpressions within the regular expression are saved in the array
  20.               variable BASH_REMATCH.  The element of BASH_REMATCH with index 0 is the portion of the  string  matching
  21.               the  entire  regular  expression.  The element of BASH_REMATCH with index n is the portion of the string
  22.               matching the nth parenthesized subexpression.
复制代码

论坛徽章:
22
CU大牛徽章
日期:2013-09-18 15:22:06白羊座
日期:2014-04-14 22:56:32午马
日期:2014-05-16 17:18:08巳蛇
日期:2014-05-30 20:53:19寅虎
日期:2014-06-03 10:53:34未羊
日期:2014-08-12 22:15:31神斗士
日期:2015-11-20 17:26:2515-16赛季CBA联赛之浙江
日期:2016-03-15 18:27:4215-16赛季CBA联赛之同曦
日期:2016-03-22 09:21:0115-16赛季CBA联赛之北控
日期:2017-03-26 21:47:12技术图书徽章
日期:2014-04-03 16:47:26摩羯座
日期:2014-03-25 23:51:36
5 [报告]
发表于 2014-03-13 09:39 |只看该作者
@bikkuri
@rdcwayx
@seesea2517

谢谢三位大神指点~,已经明白了。
找了很多资料都没找到,还是CU多大神

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
6 [报告]
发表于 2014-03-13 10:14 |只看该作者
本帖最后由 jason680 于 2014-03-13 10:20 编辑

回复 5# GB_juno

study basic shell skill in top of this forum


http://bbs.chinaunix.net/forum-24-1.html

Shell版新手导航    Shell基础二十篇    Shell十三问    Shell综合水平测试    Linux相关书籍    Shell版精华帖合集    Shell索引树


Linux相关书籍  http://bbs.chinaunix.net/thread-1776727-1-1.html
(中文版)  ABS_Guide_cn.pdf(pdf格式).tar.bz2
  
  ...
  =~ 用于正则表达式,这个操作将在正则表达式匹配部分讲解,只有version3 才支持.
  ...
  =~ 正则表达式(Regular Expression) 匹配操作符在双方括号(double brackets)
测试表达式中使用. (Perl 也有一个相似的操作符.)
   

英文版(6.2):
Advanced Bash-Scripting Guide_6.2.pdf

=~
regular expression match. This operator was introduced with version 3 of Bash.

论坛徽章:
22
CU大牛徽章
日期:2013-09-18 15:22:06白羊座
日期:2014-04-14 22:56:32午马
日期:2014-05-16 17:18:08巳蛇
日期:2014-05-30 20:53:19寅虎
日期:2014-06-03 10:53:34未羊
日期:2014-08-12 22:15:31神斗士
日期:2015-11-20 17:26:2515-16赛季CBA联赛之浙江
日期:2016-03-15 18:27:4215-16赛季CBA联赛之同曦
日期:2016-03-22 09:21:0115-16赛季CBA联赛之北控
日期:2017-03-26 21:47:12技术图书徽章
日期:2014-04-03 16:47:26摩羯座
日期:2014-03-25 23:51:36
7 [报告]
发表于 2014-03-13 10:20 |只看该作者
@jason680
谢谢,之前在ABS里面没有看到后面37章..惭愧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP