正则表达式
1、元字符
2、通配符
- 通配:文件名
- 元字符:文件的内容
统计词频
3、 grep egrep fgrep
grep:最原始,扩展的正则无效
egrep:扩展grep命令,支持基本和扩展正则表达式,等价与grep -E
egrep "r[a-z].+t" /etc/passwd #匹配;r开始后面跟a-z的任意符号 跟一个或多个任意符号 最后以t结尾。
egrep "c(a|o)t" group
fgrep:快速grep命令,不支持正则表达式,按照字符串的字面意思进行匹配,等价于grep -F
fgrep "root" /etc/passwd
fgrep "." /etc/hosts
4、grep选项
- 在group中不是root 的内容 一屏一屏显示出来
- 在group 中查找rXXXx 的行
- 以c或h开始XXx
5、作业总结:
- 文本中后面不能有空格
- > 为覆盖写入。>> 为在后面添加
#! /bin/bash
str=`egrep "^([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" ip.txt`
echo "$str"
查看当前目录下的所有文件内容
#findall
#! /bin/bash
arr=(`ls`) # 查询当前目录的所有文件名并存入数组arr
for s in "${arr[@]}" # 循环遍历数组arr
do
echo "$s" # 输出当前文件名
more $s # 输出文件中的内容
echo # 换行
done
6、查询符合ip、本机ip
#8-10:查询/etc目录下所有rc开头然后跟一数字的文件名
#! /bin/bash
str=`ls /etc | grep -P "^rc\d"`
echo "$str"
#8-18 查询demo5中4个数字结尾的内容
#! /bin/bash
str=`egrep "[[:digit:]]{4}$" demo5.txt`
echo "$str"
# 8-21 查询符合ip格式的内容
#! /bin/bash
str=`egrep "^([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9
]{2}|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0
-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" ip.txt`
echo "$str"
# ip22 获取本机ip地址
#! /bin/bash
str=`egrep "^([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9
]{2}|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0
-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])" ip.txt`
echo "$str" > ip22.txt
tail -1 ip22.txt