shell脚本三——正则表达式

时间:2021-12-05 09:48:00
  1. shell函数:shell中允许将一组命令集合或语句形成一段可用代码,这些代码块称为shell函数。给这段代码起个名字称为函数名,后续可以直接调用该段代码。
  2. 格式:fun() { 命令 }
  3. Shell正则表达式

定义:匹配字符串,为了处理大量得文本和字符串指定的一套规则和方法。

分类:基础正则和扩展正则(+ ? | () )

正则与通配的区别:

1) 三剑客awk sed egrep都是正则

2) 文件目录名——通配符 ; 文件内容(字符串,文本内容)——正则表达式

. 匹配任意单个字符

^ 匹配前面字符串开头

$ 匹配前面字符串结尾

*匹配前一个字符的零个或多个

.*表示任意长度的任意字符

+表示前面的字符初选最少一次的情况

?表示前面字符出现最多一次

[ ]表示范围内的一个字符

[.-.]匹配括号里的任意一个字符

^[^] 匹配[^]字符之外的任意一个字符

{n,m}表示最少n次 最多m次

\>锚定单词尾部

\<锁定单词首部

( )调用前面第一个分组

|

例:打印出包含某个关键词的文件(关键词执行脚本时接收)

#!/bin/bash

key=$1

for file in `find / -type f`

do

        grep "$key" $file &>/dev/null

        if [ $? -eq 0 ];then

                echo $file

                sleep 1

        fi

done

 

  1. 统计系统中以.sh结尾的文件总大小,输出结果以kb为单位

#!/bin/bash

sum=0

for size in `find /root -name "*.sh" -exec ls -l {} \; | cut -d " " -f 5`

do

        let sum+=$size

done

echo "$((sum/1024))kb"