Linux_shell编程基础

来源:互联网 发布:it技能 编辑:程序博客网 时间:2024/06/11 15:56

bash的基础特性(3)

1.提供了编程环境

程序=指令+数据

程序的编程风格:

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

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

 

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

程序的两种执行方式:

计算机:运行二进制指令

低级:汇编

高级:

汇编:高级语言 --> 编辑器 --> 目标代码

编译器:把源代码整个编译成目标代码,执行时不在需要编译器,直接在支持目标代码的平台上运行

C , C++ , java

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

解释器:一条一条的解释执行源语言(可以跨平台、效率低)

shell , perl , python(最高级语言,离人类较近)

过程式编程:

顺序执行

循环执行

选择执行

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

编程语言的基本结构

数据:变量、数组

表达式

语句

 

shell脚本:文本文件

#!/bin/bash

#!/usr/bin/python

#!/usr/bin/perl

 

运行脚本:

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

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

 

变量:

命名的内存空间:

数据存储方式:

字符:110 : 24

数值:110 --> 8

整型

浮点型

变量:变量类型

作用:

1.数值存储格式

2.参与的运算

3.表示的数据范围

类型:

字符:

数值:

整型

浮点型

编程程序语言:

强类型:

弱类型: bash 作用:实现系统的自动化

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

不支持浮点数

 

02

grep:

Linux上下文处理三剑客

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

grep , egrep , fgrep

sedstream editor ,文本编辑工具 ;

awkLinux上的实现gawk文本报告生成器(是一个单独的编程工具)

 

grep:

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

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

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

分两类:

基本正则表达式:BRE

扩展正则表达式:ERE

grep -E , egrep

正则表达式引擎

 

主要参数:
[options]主要参数:
c:只输出匹配行的计数。
i:不区分大 小写(只适用于单字符)
h:查询多文件时不显示文件名。
l:查询多文件时只输出包含匹配字符的文件名。
n:显示匹配行及 行号。
s:不显示不存在或无匹配文本的错误信息。
v:显示不能够被匹配的所有行。

-q: 静默模式,不显示任何信息
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行

 

基本正则表达式元字符:

字符匹配:

. : 匹配任意单个字符

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

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

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

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

例:grep “x*y”  --> abxy ; xay ; xxxxy

贪婪模式

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

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

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

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

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

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

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

 

位置锚定:

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

$: 行尾锚定,用于模式的最右侧

^PATTERN$: 用于模式匹配整行

^$: 空行 (连空格都没有)

^$: [[:space]]*$:包括空格的空行

\< \b词首锚定,用于单词模式的左侧

\> \b词尾锚定,用于单词模式的右侧

 

分组:

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

\(xy\)*ab

注:分组括号中的模式匹配到的内容会被正则表达式记录与内部的变量中,这些变量的命名方式为:\1

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

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

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

 

 

 

 

 

 

 

0 0