Shell_07_函数和正则表达式

@

函数

函数:脚本代码块,可在任意位置通过函数名调用

1)函数分为函数库函数和自定义函数,且函数名称具有唯一性;

2)调用的函数必须是已创建的;

3)函数运行完成后,会返回一个状态码

//选取于运行最后一个命令的返回状态码或return命令的指定值

自定义函数

function:创建脚本文件中的函数

指令格式:


function 函数名(){
    程序段
}

(1)retun命令可在函数中提前结束函数,并返回指定的状态码

1)直接指定数值的范围为:0~255(若大于255,则求余256)


(2)每个函数的默认变量为:

1)$0代表函数名

2)$1代表第一个函数参数、$2代表第二个函数参数(以此类推)


(3)通过local命令,可指定函数内部的局部变量

1)Shell脚本中创建的变量,默认为全局变量


(4)若重复定义的函数,则后一个函数会覆盖前一个函数


如:创建show123.sh脚本文件将one、two、three转换为1、2、3

1)编写show123.sh脚本文件
在这里插入图片描述

2)调用show123.sh脚本文件

在这里插入图片描述


如:通过result命令返回状态码

1)编写test25.sh脚本文件;
在这里插入图片描述

2)调用test25.sh脚本文件
在这里插入图片描述


如:在函数创建局部变量

1)编写test31.sh脚本文件
在这里插入图片描述
2)调用test31.sh脚本文件
在这里插入图片描述

正则表达式

模式模板(Pattern Template):通过正则表达式过滤数据流中所需的数据


正则表达式:以行为单位对字符串操作

1)正则表达式分为:基础正则表达式、扩展正则表达式

2)语系的不同会可能导致同样的正则表达式产生不同的结果

3)正则符号在gawk命令中,需在其开始和结束添加“/”符号


匹配分为:贪婪匹配(默认)、非贪婪匹配

1)贪婪匹配:多个结果匹配成功时,选择匹配成功数据最多的;

2)非贪婪匹配:多个结果匹配成功时,选择匹配成功数据最少的;

//在操作符后添加“?”符号,即为非贪婪匹配


POSIX基础正则表达式(Basic Regular Expression,BRE):

基础正则符号 解析
^ 含义:定位在行首
范例:查找行首为#的行,并输出
示范:grep ‘^#’ test.txt
$ 含义:定位在行尾
范例:查找行尾为#的行,并输出
示范:grep ‘#$’ test.txt
. 含义:代表一定有一个任意字符
范例:查找含有eve、eae、e e的行,并输出 (空格也是一个字符)
示范:grep ‘e.e’ test.txt
* 含义:代表前面一个字符的后续出现0次和任意多次
范例:查找含有es、ess、essss的行,并输出
示范:grep ‘ess*’ test.txt
\ 含义:去除特殊符号的特殊意义
范例:查找含有^的行,并输出
示范:grep \^ test.txt
[ ] 含义:查找所有举例字符的行
范例:查找含有aay、afy、aly的行,并输出
示范:grep ‘a[alf]y’ test.txt
含义:查找在字符范围内的行
范例:查找含有大写字母的行
示范:grep ‘[A-Z]’ test.txt
含义:查找n到m个范围内的字符的行
范例:查找g到d中含有2到5个o的行,并输出
示范:grep ‘go\{2,5\}d’ test.txt
含义:查找含有n个字符的行
范例:查找g到d中含有3个o的行,并输出
示范:grep ‘go\{3\}d’ test.txt
含义:查找含有至少含有n个字符的行
范例:查找g到d中含有3个o以上的行,并输出
示范:grep ‘go\{3,\}d’ test.txt
[^] 含义:代表不含有某个字符
范例:查找不含有test的行,并输出
示范:grep ‘[^test]’ test.txt

POSIX扩展正则表达式(Extended Regular Expression,ERE):

扩展正则符号 解析
+ 含义:代表前面一个字符的后续出现1次和任意多次
范例:查找含有esd、essd、essssd的行,并输出
示范:grep +E ‘es+d’ test.txt
? 含义:代表前面一个字符后续出现0次和1次
范例:查找含有gd、god的行,并输出
示范:grep +E ‘go?d’ test.txt
| 含义:代表或
范例:查找含有gd或god或good的行,并输出
示范:grep +E ‘gd | god | good’ test.txt
( ) 含义:代表多个字符进行组合
范例:查找含有glad和good的行,并输出
示范:grep +E ‘g(la | oo)d’ test.txt
( )+ 含义:代表多个重复组合字符
范例:查找含有A123123123123C的行,并输出
示范:grep +E ‘A(123)+C’ test.txt
posted @ 2022-02-09 15:26  爱和可乐的w  阅读(79)  评论(0编辑  收藏  举报