鸟哥的Linux私房菜(四)正则与ShellScript
正则表达式与字符串匹配
语系
常见的正则表达式可以分为基本正则表达式和扩展正则表达式
1、基本的正则表达式(Basic Regular Expression 又叫Basic RegEx 简称BREs)
2、扩展的正则表达式(Extended Regular Expression 又叫Extended RegEx 简称EREs)
两者略有不同,本书中我们主要还是了解基本正则。
学习正则表达式最重要的是记忆、理解、练习。其中记忆是关键,正则表达式的规则多种多样,首先最重要的是我们把常用的规则记下来,然后反复练习,熟练并灵活的运用到实际开发过程中。
用途
正则表达式主要就是第一一个字符串的规则来匹配目标字符串,常用于Linux中文本的查找与替换,例如sed和grep命令。
使用时要注意不同语系之间字母表排列的顺序,例如在C和Zh-CN不同语系中A-Z表示不同的字符序列。
grep命令
基本用法:cat 1.txt | grep "gellp" #找到包含hello的行
-n 同时输出行号
--color=auto 关键词高亮显示
-A3 -B2 关键词所在行的前两行和后三行也显示出来
-i 忽略大小写
grep -n 'abc' 1.txt # 包含abc
grep -vn ...... 不包含abc
grep -in ...... 忽略大小写
grep送一个非常非常常用的命令,在匹配一个命令的大量输出结果时非常方便。
同样的,grep也可以使用正则的方式去匹配。
正则表达式的规则在不同的编程语言中大同小异,网上正则表很多,这里不再赘述。
sed命令
实例:sed -i 's/abc/def/g' 1.txt 把文本中指定模式的字符串替换为其他字符串
-n 安静模式
-i 直接修改原始文件
扩展正则
增加了诸如+?|()等常用正则高级规则
- 重复1次或更多
- 重复0次或更多
| 或
() 分组
Shell Script
实例:
#!/bin/bash echo "Hello World !"
第一行指定使用哪个shell
第二行表示输出字符串
如上就是最简单的一个shell脚本,也就是一堆需要执行的命令的有机结合体
Shell echo命令
Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式:
echo string
可以使用echo实现更复杂的输出格式控制。
Shell test 命令
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
数值测试
参数 说明
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真
Shell 流程控制
sh的流程控制不可为空,如果else分支没有语句执行,就不要写这个else。
if 语句语法格式:
if condition then command1 command2 ... commandN fi
for 循环
for循环格式为:
for var in item1 item2 ... itemN do command1 command2 ... commandN done
Shell 函数
#!/bin/bash # author:jefer demo(){ echo "shell 函数!" } echo "-----函数开始执行-----" demo echo "-----函数执行完毕-----"
如上为shell中常用的语句,和我们常见的脚本语言类似,包括变量、判断、流程、循环、函数等内容。
页码:P400
#Linux#