|
VBird说学习Linux,掌握了Shell和正则就相当于打通了任督二脉,此后能力的成长才会突飞猛进。
Shell的基础学习之前已经总结了一篇博客:http://www.cnblogs.com/jyzhao/p/4485553.html
本文将总结Shell中的正则表达式及常用的字符处理命令,为打通任督二脉奠定基础^_^。
- 基础正则表达式举例说明
- 字符截取命令
- 字符处理命令
1. 基础正则表达式举例说明
*,.,\,^word,word$,
,[^list],[n1-n2],\{n\},\{n,m\}
例1:简易判断日期格式
比如:2015-05-11,只是简单判断数字的格式。
^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}$
例2:简易判断IP地址格式
比如:192.168.1.100,只是简单判断数字的格式。
[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}
例3:找出1.txt文本文件中以字母开头的以及不是以字母开头的行。
以字母开头的行:
grep --color=auto "^[a-z,A-Z]" 1.txt
不是以字母开头的行:
grep --color=auto "^[^a-z,A-Z]" 1.txt
2. 字符截取命令
cut命令
用途:对于分隔符规范的文本进行特定截取某些列,特点是简单易用。
例4:cut截取出用户名以及对应的uid,gid,过滤掉包含'/sbin'的行。
grep -v "/sbin" /etc/passwd | cut -f 1,3,4 -d ":"
截取结果示例:
root:0:0
oracle:500:500
grid:501:500
awk命令
用途:对于分隔符不规范的文本进行截取,特点是功能强大,语法比cut命令复杂。
awk '条件类型1{动作1}条件类型2{动作2} ...' filename
awk的内置变量:
NF 每一行($0)拥有的字段总数
NR 目前awk所处理的是“第几行”数据
FS 目前的分隔字符,默认是空格键
awk的逻辑运算符:
>, =, |
|
|