本帖最后由 乐橙306 于 2016-3-13 10:27 编辑
参考文档
正则表达式
http://baike.baidu.com/view/94238.htm
正则
http://www.8090st.com/zhengze-edu-biaoda.html
参考文档
正则表达式
http://baike.baidu.com/view/94238.htm
正则
http://www.8090st.com/zhengze-edu-biaoda.html
0
本帖最后由 乐橙306 于 2016-3-13 11:19 编辑
- 常用正则
- - . : 匹配除换行符以外的任意字符
- - ? : 重复0次或1次
- - + : 重复1次或更多次
- - * : 重复0次或更多次
- - \d :匹配数字
- - ^ : 匹配字符串的开始
- - $ : 匹配字符串的结尾
- - {n} : 重复n次
- - {n,} : 重复n次或更多次
- - [c] : 匹配单个字符c
- - [a-z] : 匹配a-z小写字母的任意一个
- -$1 : 表示正则捕捉到的内容
- ^/(.*)$ 中 ^/ 表示已 / 开头, . 表示匹配除换行符以外的任意字符,* 表示重复0次或更多次,$ 表示匹配字符串的结束,() 表示捕获(匹配)内容
- 小括号()之间匹配的内容,可以在后面通过$1来引用,$2表示的是前面第二个()里的内容
- \. 转义字符 + 匹配除换行符以外的任意字符
以下字符在匹配其本身时,通常需要进行转义。在实际应用中,根据具体情况,需要转义的字符可能不止如下所列字符
. $ ^ { [ ( | ) * + ? \
0
- linux中shell变量$#,$@,$0,$1,$2的含义解释:
- 变量说明:
- $
- Shell本身的PID(ProcessID)
- $!
- Shell最后运行的后台Process的PID
- $?
- 最后运行的命令的结束代码(返回值)
- $-
- 使用Set命令设定的Flag一览
- $*
- 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
- $@
- 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
- $#
- 添加到Shell的参数个数
- $0
- Shell本身的文件名
- $1~$n
- 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
- $1 $2 $3 表示 执行脚本时 后面带的参数
0
- >> 表示追加
- > 表示覆盖
- < 指标准信息输入路径
- 1> 指标准信息输出路径
- 2> 指错误信息输出路径
- > /dev/null 将输出重定向到/dev/null,这是个空设备,也就是忽略其输出。
- 2> &1 是将错误输出到标准输出,如果在控制台调试,也就是屏幕上,方便调试。
- &>a.txt 意思是把标准输出和标准错误输出都重定向到文件a.txt中
- crontab -l
- SHELL=/bin/bash
- */10 * * * * /usr/sbin/ntpdate -u pool.ntp.org > /dev/null 2>&1;/sbin/hwclock -w
0
- Shell if里面相关参数:
- http://www.cnblogs.com/image-eye/archive/2011/08/20/2147015.html
- [ -a FILE ] 如果 FILE 存在则为真。
- [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。
- [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。
- [ -d FILE ] 如果 FILE 存在且是一个目录则为真。
- [ -e FILE ] 如果 FILE 存在则为真。
- [ -f FILE ] 如果 FILE 存在且是一个普通文件则为真。
- [ -r file ] 判断文件是否可读
- [ -w file ] 判断文件是否可写
- [ -x file ] 判断文件是否可执行
- [-s file] 文件大小非0时为真
- [ -z String ]String的长度为零则为真
0
- 这里说下特殊符号 冒号 :
- 用shell 取一个字符串的第n个字符
- echo ${变量名:起始:长度}
- [root@niaoyun-101 tmp]# cat a2.sh
- #!/bin/bash
- A=20150329_1300
- B=`echo ${A:9:2}`
- [root@niaoyun-101 tmp]#
0
本帖最后由 乐橙306 于 2016-3-31 14:44 编辑
- shell截取字符串
- 参考文档
- http://www.jb51.net/article/56563.htm
- 格式 :
- echo ${var * * * }
- # 匹配第一 留右
- ## 匹配最后 留右
- % 匹配第一 留左
- %% 匹配最后 留左
- echo ${var:0:5} 字符串:起始:长度
- [root@aliyun-63 tmp]# cat a3.sh
- #!/bin/bash
- var=http://www.aaa.com/root/123.htm
- echo ${var#*//} # 号从左往右截取,匹配第一,删除左边字符,保留右边字符
- echo ${var##*/} ## 号从左往右截取,匹配最后,删除左边字符,保留右边字符
- echo ${var%/*} %号从右往左截取,匹配第一,删除右边字符,保留左边字符
- echo ${var%%/*} %% 号从右往左截取,匹配最后,删除右边字符,保留左边字符
- echo ${var:0:5} 从左边第几个字符开始,及字符的个数
- echo ${var:7} 从左边第几个字符开始,一直到结束
- echo ${var:0-7:3} 从右边第几个字符开始,及字符的个数
- echo ${var:0-7} 从右边第几个字符开始,一直到结束
- [root@aliyun-63 tmp]#
- [root@aliyun-63 tmp]# sh a3.sh
- www.aaa.com/root/123.htm
- 123.htm
- http://www.aaa.com/root
- http:
- http:
- www.aaa.com/root/123.htm
- 123
- 123.htm
- [root@aliyun-63 tmp]#
0
这篇文章主要介绍了Shell脚本8种字符串截取方法总结,每个方法给出了实例代码和操作结果,一目了然,需要的朋友可以参考下
echo ${var * * * }
# 匹配左边第一 留右 从左边起
## 匹配左边最后 留右 从左边起
% 匹配右边第一 留左 从右边起
%% 匹配右边最后 留左 从右边起
星号表示要删除的字符
var# * // 删除左边字符,保留右边字符。
var## * /
var% / *
var%% / *
Linux 的字符串截取很有用。有八种方法。
假设有变量 var=http://www.aaa.com/123.htm
1. # 号截取,删除左边字符,保留右边字符。
var=http://www.aaa.com/123.htm
echo ${var#*//}
其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符
即删除 http://
结果是 :www.aaa.com/123.htm
2. ## 号截取,删除左边字符,保留右边字符。
var=http://www.aaa.com/123.htm
echo ${var##*/}
##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
即删除 http://www.aaa.com/
结果是 123.htm
3. %号截取,删除右边字符,保留左边字符
var=http://www.aaa.com/123.htm
echo ${var%/*}
%/* 表示从右边开始,删除第一个 / 号及右边的字符
结果是:http://www.aaa.com
4. %% 号截取,删除右边字符,保留左边字符
var=http://www.aaa.com/123.htm
echo ${var%%/*}
%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
结果是:http:
5. 保留/打印从左边第几个字符开始,及字符的个数
var=http://www.aaa.com/123.htm
echo ${var:0:5}
其中的 0 表示左边第一个字符开始打印,5 表示字符的总个数。
结果是:http:
6. 从左边第几个字符开始,一直到结束。
var=http://www.aaa.com/123.htm
echo ${var:7}
其中的 7 表示左边第8个字符开始,一直到结束。
结果是 :www.aaa.com/123.htm
7. 从右边第几个字符开始,及字符的个数
var=http://www.aaa.com/123.htm
echo ${var:0-7:3}
其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
结果是:123
8. 从右边第几个字符开始,一直到结束。
var=http://www.aaa.com/123.htm
echo ${var:0-7}
表示从右边第七个字符开始,一直到结束。
结果是:123.htm
注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)
echo ${var * * * }
# 匹配左边第一 留右 从左边起
## 匹配左边最后 留右 从左边起
% 匹配右边第一 留左 从右边起
%% 匹配右边最后 留左 从右边起
星号表示要删除的字符
var# * // 删除左边字符,保留右边字符。
var## * /
var% / *
var%% / *
Linux 的字符串截取很有用。有八种方法。
假设有变量 var=http://www.aaa.com/123.htm
1. # 号截取,删除左边字符,保留右边字符。
var=http://www.aaa.com/123.htm
echo ${var#*//}
其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符
即删除 http://
结果是 :www.aaa.com/123.htm
2. ## 号截取,删除左边字符,保留右边字符。
var=http://www.aaa.com/123.htm
echo ${var##*/}
##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
即删除 http://www.aaa.com/
结果是 123.htm
3. %号截取,删除右边字符,保留左边字符
var=http://www.aaa.com/123.htm
echo ${var%/*}
%/* 表示从右边开始,删除第一个 / 号及右边的字符
结果是:http://www.aaa.com
4. %% 号截取,删除右边字符,保留左边字符
var=http://www.aaa.com/123.htm
echo ${var%%/*}
%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
结果是:http:
5. 保留/打印从左边第几个字符开始,及字符的个数
var=http://www.aaa.com/123.htm
echo ${var:0:5}
其中的 0 表示左边第一个字符开始打印,5 表示字符的总个数。
结果是:http:
6. 从左边第几个字符开始,一直到结束。
var=http://www.aaa.com/123.htm
echo ${var:7}
其中的 7 表示左边第8个字符开始,一直到结束。
结果是 :www.aaa.com/123.htm
7. 从右边第几个字符开始,及字符的个数
var=http://www.aaa.com/123.htm
echo ${var:0-7:3}
其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
结果是:123
8. 从右边第几个字符开始,一直到结束。
var=http://www.aaa.com/123.htm
echo ${var:0-7}
表示从右边第七个字符开始,一直到结束。
结果是:123.htm
注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)
编辑回复