首页 > 技术文章 > Linux基础学习(11)--Shell编程

lyq-biu 2018-09-10 11:01 原文

第十一章——Shell编程

一.基础正则表达式

    1.正则表达式与通配符(*,?,[ ]):

 

    2.基础正则表达式:

 

二.字符截取命令

    1.cut字段提取命令:

空格分割时,不知道空格有多少个,无法分割行数,grep -v取反

 

 

 

 

    2. printf命令(严格说不是字符提取命令,搭配awk使用):

 

 printf不能用于直接输出文件内容或用管道符接受上一句的输出,它会把文件当成字符串输出。

 

                                                    注:Linux系统无print命令,只有printf,print只能在awk命令里使用。

    3.awk命令:(默认能识别的分割符是制表符和空格)

注:$0表示一行本身,$1表示文件第一列,awk外是单引号,{}里是双引号

 

 注:print自动在后面加一个换行符,printf不会

BEGIN在数据处理之前执行一次

 

END在数据处理之后执行一次

 

FS指定分割符,第一列没有分割(默认为空格),先读入后分割

 

加一个BFGIN在数据处理之前先指定分割符

进行条件筛选

 

 

    4. sed命令:

可以从管道符接受数据进行修改,可以直接修改命令的结果(而vim不可以)

不加-n会先输出第二行然后输出所有行,一般和-n联立使用输出指定行

 

 

 

在第一行后追加

 

在行前插入

 

注:不改变原文件,只修改输出,要修改原文件加-i,加-i时无输出,直接修改了原文件,有一定危险性(最好修改用vim)

 

 不加行号全文找

三.字符处理命令

    1.排序命令sort:

 

 

 

    2.统计命令wc:

 

 

四.条件判断

    1.按照文件类型进行判断:

 

 

    2.按照文件权限进行判断:

 

    3.两个文件之间进行比较:

 

 

 

    4.两个整数之间比较:

 

    5.字符串的判断:

注:[ ]中括号两边有空格,否则会报错,还有==两边也有空格,不然一直为True输出yes

 

 

 

 

    6.多重条件判断:

 

五.流程控制

    1. if语句:

           (1)单分支if条件语句:

 

                                 

                                    例子:判断分区使用率:

 

 

           (2)双分支if条件语句:

 

                                           

                                               例子2:判断apache是否启动

 

                    (3)多分支if条件语句:

    2. case语句:

       

 

 

 

    3. for循环:

 

更利于系统的维护和管理

 

 

 

 

    4. while循环:

 

 

 

 

注:shell脚本语言(所见即所得)写的所有的脚本都不需要编译就可以直接运行,不是不需要编译,是在执行的同时进行编译,简化了编译过程。好处是编译更加简单,坏处是效率要更慢(主要工作是帮助管理员进行重复操作或运维工作)。

 

推荐阅读