bash基础特性(3)

1.      提供了编程环境

    程序:指令+数据

    程序的编程风格

           过程式:以指令为中心,数据服务于指令

           对象式:以数据为中心,指令服务于数据

    shell程序:提供了编程能力,解释执行

    程序的执行方式:

           计算机:运行二进制指令。

           编程语言:

                    低级:汇编

                    高级:

                             编译:高级语言-->编辑器-->解释器-->目标代码

                                       c、c++、java 

                             解释:高级语言-->解释器-->机器代码

                                       shell、perl、python

过程式编程:

           顺序执行

           循环执行

           选择执行

           shell编程:过程式、解释执行

                    编程语言的基本结构:

                             数据存储:变量、数组

                             表达式

                             语句

shell脚本:文本文件

           #!/bin/bash

           #!/usr/bin/python

           #!/usr/bin/perl

           magic number:魔数

           运行脚本:

1.      给予执行权限,通过具体的文件路劲指定文件执行。

2.      直接运行解释器,将脚本作为解释器程序的参数运行。

chmod +x mytestFile.txt

         变量:

                   命名的内存空间:

                            数据存储方式:

                                     字符:110:24

                                     数值:110-->8

                                               整型

                                               浮点型

                            变量:变量类型

                                     作用:

1.      数据存储格式:

2.      参与的运算

3.      表示的数据范围:

类型:

         字符:

         数值:

                   整型

                   浮点型

编程程序语言:

         强类型

         弱类型:bash

                   把所有要存储的数据统统当做字符进行

                   不支持浮点数:

逻辑运算:

         true,false

         与:&& 或 ||,都是短路运算符

grep:

         linux上文本处理三剑客

                   grep:文本过滤(模式:pattern)工具

                            grep,egrep,fgrep

                   sed,streameditor,文本编辑工具:

                   awk:linux上的实现gawk,文本报告生成器。

         grep:Globalsearch Regular expression and print out the line

作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行匹配检查,打印匹配到的行。

         模式:由正则表达式字符及文本所编写的过滤条件。

         REGEXP:有一类特殊字符及文本字符所编写的模式,其中有些字符不表示字符字面意思,而表示控制或通配的功能。

         分两类:

                   基本正则表达式:BRE

                   扩展正则表达式:ERE

                            grep–E,egrep

         正则表达式引擎:

                   grep[OPTIONS] PATTERN [FILE...]

                            选项:

                                     --color=auto:对匹配到的文本着色显示:

                                     -v:显示不能被pattern匹配到的行。

                                     -i:忽略字符大小写。

                                     -o:仅显示匹配到的字符串。

                                     -q:静默模式,不输出任何信息。

                                     -A#:after,后#行

                                     -B#:before,前#行

                                     -C#:context,前后各#行

                                     -E:使用ERE

基本正则表达式元字符:

         .:匹配任意单个字符

         []:匹配指定范围内的任意单个字符

         [^]:匹配指定范围外的任意单个字符

                   [:dight:]、[:lower:]、[:upper:]、[:alpha:]、[:punct:]、[:space:]

                   如:grep'[[:alpha:]][[:alpha:]]t' /etc/passwd

         匹配次数:要用在指定次数的字符后面,用户指定前面的字符要出现的次数

                   *:匹配前面的字符任意次

例如:grep “x*y”

         abxy,

                                     .*:任意长度的任意字符

                                     \?:匹配其前面的字符0或1次,即前面的可有可无

                                     \+:匹配前面的字符至少1次

                                     \{m\}:匹配前面的字符m次

                                     \{m,n\}:匹配前面的字符至少m次,至多n次

                                               \{0,n\}:匹配前面的字符至多n次

                                               \{m,\}匹配前面的字符至少m次

                            位置锚点:

                                     ^:行首锚点:用于模式的最左侧

                                     $:行位锚点:用于模式的最右侧。

                                     ^PATHERN$:用户匹配整行。

                                               ^$:空行。

                                               ^[[:space:]]*$

                                     \<或 \b:词首锚点:用于单词模式的最侧

                                     \>或\b:词尾锚点:用于单词模式的右侧。

                                     \<PATTERN\>:匹配整个单词。

                            分组:\(\)将人一个或多个字符捆绑在一起,当做一个整体进行处理。

                                     \(xy\)*ab

Note:分组括号中的模式匹配到的内容胡被正则表达式引擎记录于内部的变量中,这些变量的命名方式为:\1,\2,\3

\1:从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符。

\(ab\+\(xy\)*\):

         \1:ab\+\(xy\)*

         \2:xy

后向引用:引用前面的分组括号中的模式所匹配字符(而非模式本

猜你喜欢

转载自blog.csdn.net/matengbing/article/details/80239036