一、正则表达式:


例子:








二、字符截取命令

1、cut 选项 文件名       cut进行列提取-f 提取第几列
    -d 按照指定的分隔符分隔列

注意:上面的studebt.txt中的间隔不是“空格”,而是制表符“Tab”。
cut -f 2,4 studebt.txt
cut -d ":" -f 2,3 /etc/passwd
案例:假设我想删除当前Linux系统下的除了root外的所有可以登录的普通用户,(所有可以登录的普通用户/bin/bash):(1)先提取出来所有普通用户的用户名
cat /etc/passwd | grep "/bin/bash" | grep -v root | cut -d ":" -f 1
(2)再把提取出来的用户的用户名赋值给一个变量,用循环的方式一个一个删除。注:cut命令只能识别制表符Tab,逗号,冒号等作为间隔符的列,不能识别空格作为间隔符的列,--->因此cut符具有局限性,从而引出awk。2、printf 格式化输出命令
printf "输出类型输出格式" 输出内容%ns   字符串%ni   整数%m.nf 浮点数下面介绍几个案例:



3、awk  列截取
可以进行截取字符段、函数、判断、流程控制等强大的功能。



上图,注: $2表示第2列;\r回车 ; \t Tab ; \n换行

介绍awk中的几个常用命令:
(1)BEGIN:主要用于处理FS默认的分隔符cat /etc/passwd|grep "/bin/bash"|awk 'BEGIN{FS=":"}{printf $1 "\t" $3 "\n"}'
(2)FS内置变量:手工定义分隔符,默认情况下awk的分隔符是Tab、空格。cat student.txt|grep -v name|awk '$6>80 {printf $2 "\n"}'
(3)ENDawk 'END {printf "The End\n"} printf $2 "\t" $6 "\n"' student.txt
4、sed 流编辑器  (以行为单位)
作用:对文件中的数据进行选取、增删改。
sed 选项 '动作'
选项:-n 只打印查询出的内容
    -e 允许多个条件执行,多个条件之间用“分号”或“回车”
    -i 修改了文件本身内容,不加-i并没有修改文件的内容
动作:注意,动作必须用单引号括起来!a  追加i  行之前插入p  打印输出d  删除c  替换行号s/旧字符串/新字符串/g    替换字符串

三、字符处理命令

1.排序命令sortsort 选项 文件名
选项:-f 忽略大小写
    -n 以数值排序,默认以字符串
    -r 反向排序
    -t 指定分隔符,默认以Tab为分隔符
2.wc 选项 文件名    统计命令
选项:-l 行数
    -w 单词数
    -m 字符数

条件判断






两种判断格式:
法1:test -e /root/install.log
法2:[ -e /root/install.log ]  注意:[]与中间的字符串必须有空格
注解:但是每次判断完文件是否存在,我们还需要用echo $?查看文件是否存在,比较麻烦--->因此我们可以用“逻辑运算符”把两句话联系起来,见下:
[ -e /root/install.log ]&&echo "yes" || echo "no"
再例:[-d /root ]&&echo "yes" || echo "no" 判断/root是否是一个目录;如果是目录,输出yes,否则输出no

四、流程控制语句
(一)控制语句-if语句

1、单分支if条件语句if [条件判断式] ; then       //需要;,和then写在一行程序fi
或者if [条件判断式]         //不需要;,不和then写在一行then程序fi
2、双分支if条件语句if [条件判断式]         //不需要;,不和then写在一行then条件成立时,执行的程序else条件不成立时,执行的另一个程序fi
3、多分支if条件语句if [ 条件判断式1 ]then当条件判断式1成立时,执行程序1elseif [条件判断式2]then当条件判断式2成立时,执行程序2...省略更多条件...else当所有条件都不成立时,执行此程序fi
注意:
(1)if语句使用fi结尾,和一般语言使用大括号结尾不同
(2)[条件判断式]就是使用test命令判断,所以中括号和条件判断式之间必须有空格
(3)then后面跟符合条件之后执行的程序,可以放在[]之后,用“;”分割。也可以换行写入,就不需要“;”了。例子1:判断分区使用率#!bin/bash   //标注:这个是shell脚本rate=$(df -h|grep "/dev/sda5"|awk '{printf $5}'|cut -d "%d" -f1)   #统计根分区使用率,并把根分区使用率作为变量值赋给rateif [ $rate -ge 80 ]thenecho "Warning! /dev/sda3 is full!"fi
例子2:备份/var/lib/mysql数据库到/tmp/dbbak目录下#!bin/bashntpdate asia.pool.ntp.org &>/dev/null   #同步系统时间date=$(date +%y%m%d)  #把当前系统时间按照年月日格式赋值给变量datesize=$(du -sh /var/lib/mysql)  #统计mysql数据库的大小,并把大小赋予size变量if [ -d /tmp/dbbak ]   如果/tmp/dbbak目录存在thenecho "Date:$date">/tmp/dbbak/dbinfo.txtecho "Date size:$size">>//tmp/dbbak/dbinfo.txtcd /tmp/dbbaktar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt &>/dev/nullrm -rf /tmp/dbbak/dbinfo.txtelsemkdir /tmp/dbbakecho "Date:$date">/tmp/dbbak/dbinfo.txtecho "Date size:$size">>//tmp/dbbak/dbinfo.txtcd /tmp/dbbaktar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt &>/dev/nullrm -rf /tmp/dbbak/dbinfo.txtfi
例子3:判断apache是否启动  【apache非常常用的脚本】#!/bin/bashport=$(nmap -sT 192.168.1.156|grep tcp|grep http|awk '{printf $2}')  #使用nmap命令扫描服务器,并截取apache服务的状态,赋值给portif { "$port" == "open" }thenecho "$(date) http is ok!">>/tmp/autostart-acc.logelse/etc/rc.d/init.d/httpd start &>/dev/nullecho "$(date) restart http!">>/tmp/autostart-acc.log

(二)控制语句-case语句

case $变量名 in"值1")执行程序1"值2")执行程序2......*)如果以上条件不成立,执行此程序
esac

(三)流程控制-for循环

语法一:for 变量 in 值1 值2 值3do 程序done
例1:#!/bin/bashfor time in morning noon afternoon eceningdoecho "This is $time"done
例2:批量解压缩cd /lampls *.tar.gz>ls.logfor i in $(cat ls.log)dotar -zxf$i&>/dec/nulldone
语法二:for ((初始值;循环控制条件;变量变化))do程序done
例:批量添加指定数量的用户#!/bin/bashread -p "请输入用户数量:" -t 30 numread -p "请输入用户名字:" -t 30 nameread -p "请输入用户密码:" -t 30 pass if[ ! -z "$name" -a ! -z "$name" -a ! -z "$pass"]theny=$(echo $num|sed 's/^[0-9]*$//g')  if [ -z "$y" ] 判断输入的num是否为数字thenfor((i=1;i<$num;i=i+1))do/usr/sbin/useradd $name$i&>/dev/nullecho $pass|/usr/bin/passwd -- stdin $name$i &>/dev/nulldonefifi

(四)while循环和until循环

1、
while [ 条件判断式 ]do程序done
2、
until 只要条件不成立,则一直循环;当条件成立时,循环终止。
until [ 条件判断式 ]do程序done

第11章:Shell编程相关推荐

  1. linux 【完结篇】第六章 shell编程及自动化运维--三剑客

    linux 第六章 shell编程及自动化运维–三剑客 一.正则表达式 1.前言 名词解释: 正则表达式是一种字符模式,用于在查找过程中匹配指定的字符.在大多数程序里,正则表达式都被置于2个正斜杠之间 ...

  2. c语言将pwd结果赋给变量,《网络系统管理linux实训》全套PPT电子课件教案-第4章 shell编程.ppt...

    第4章shell编程 4 1shell编程简介4 2shell分类4 3shell基本语法4 4shell程序的变量和参数4 5shell的测试表达式4 6shell的控制结构4 7awk4 8sed ...

  3. abd shell关闭所有程序_第十六章 Shell编程

    第十六章 Shell编程 16.1 shell脚本运行 所谓脚本,就是把众多命令写入一个文件中,让其按照一定的逻辑顺序执行,以完成一个具体的功能.而在Linux的shell编译环境下,shell编程与 ...

  4. Linux(b站视频兄弟连)自学笔记第十一章——shell编程

    Linux(b站视频兄弟连)自学笔记第十一章--shell基础 正则表达式 字符截取命令 cut命令 printf命令 awk命令 sed命令 字符处理命令 判断条件 流程控制 if语句 case语句 ...

  5. Linux编程基础:第4章Shell编程 课后习题

    <Linux编程基础>黑马程序员/编著 清华大学出版社 目录 一.填空题 二.判断题 三.单选题 四.简答题 1.分析以下脚本代码: 2.写出shell脚本中while循环与until循环 ...

  6. Linux编程基础案例:第4章Shell编程

    案例4-1:已知/etc/passwd文件中的各项以:分隔,若使用awk命令处理/etc/passwd文件,提取其中的第1项和第3项,并使用空格分隔提取结果,则可以使用如下命令. awk -F: '{ ...

  7. Linux系统命令与Shell编程

    第1章 linux简介 1.linux系统主要特点 免费开源.Linux是一款完全免费的操作系统,任何人都可以从网络上下载到它的源代码,并可以根据自己的需求进行定制化的开发,而且没有版权限制. 模块化 ...

  8. 第14章 Linux的shell编程

    文章目录 文档配套视频讲解链接地址 第14章 Shell编程 14.1 Shell简介 1. **Shell交互过程** **2. 选择Shell** 2. 编译型语言与解释型语言 **14.2 sh ...

  9. Java编程思想学习笔记-第11章

    <?xml version="1.0" encoding="utf-8"?> Java编程思想学习笔记-第11章 Java编程思想学习笔记-第11章 ...

  10. 运维 - 第一阶段 - linux与shell编程

    linux与shell编程 讲师:墨竹 系统运维与linux 1.系统运维是什么 简单来说运维(Operation and maintenance)是指对公司硬件和软件的维护. 硬件包括:机房.机柜. ...

最新文章

  1. 良心贴!没想到 Google 排名第一的编程语言,可以这么简单!
  2. oracle修改连接数
  3. GBK字符集和UTF8字符集的转换C++
  4. Tomcat和Eclipse不同的集成方式
  5. jvm(2)-OutOfMemoryError 异常(内存溢出异常)
  6. linux性能分析top iostat vmstat free,linux 性能篇 -- top用法(示例代码)
  7. python函数示例_带Python示例的float()函数
  8. 8个日志级别(OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL)
  9. python语言中文怎么读-python中文读什么
  10. [转载] 民兵葛二蛋——第31集
  11. 10.这就是搜索引擎:核心技术详解 --- 网页去重
  12. H3C WAC360 基于Win2012 NPS 802.1x 认证
  13. 汉化pycharm,中文
  14. 2020-12-07
  15. Vuforia Vumark初探
  16. Docker-in-Docker: Jenkins CI 内部如何运行 docker
  17. COGS 1008 贪婪大陆
  18. CephFS MDS服务 高可用
  19. 【转载】FreeIPA中间CA证书已过期
  20. 去除中文版WinRAR的弹窗广告

热门文章

  1. 列数较多的csv文件导入mysql数据库(过程及问题记录)
  2. 你的响应阻塞了没有?--Spring-WebFlux源码分析
  3. What is corresponding Cron expression to fire in every X seconds, where X 60? --转载
  4. Javascript操纵Cookie--转
  5. 【数据挖掘】数据挖掘简介
  6. 基于正则化的特征选择
  7. 百分点大数据技术团队:数据治理“PAI”实施方法论
  8. 用R语言把数据玩出花样
  9. AI影响将远超互联网 不在乎与AT市值差距
  10. 阿里巴巴利润暴涨108%