最近看了几行shell代码,初步认识了一下shell的脚本。
网上说*是元字符,不过它代表的不是字符,也不是位置,而是数量——它指定*前边的内容可以连续重复使用任意次以使整个表达式得到匹配,这里的任意次包不包括零次呢?
做了个小实验,如下图:
显然对于\w这种字符、数字或者下划线、汉字,如果以\w搜索,最后一行的非\w符号没有被列出来,而如果按\w*搜索,最后一行也被列出来了,这说明*包括零个。
因此也不难理解sed 's/\s*\(.*\)\s*$/\1/g'是用来删除任意不包括空格的字符串前后的空白符了,而这里并没有要求前后同时存在空白符。
附:
代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
代码/语法 | 说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
linux shell if:
http://blog.sina.com.cn/s/blog_6151984a0100ekl6.html