Liunx shell编程及自动化运维实现--第五章三剑客

这篇具有很好参考价值的文章主要介绍了Liunx shell编程及自动化运维实现--第五章三剑客。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、正则表达式

正则表达式(RE)是一种字符模式,用于再查找过程中匹配指定的字符,在大多数程序中,正则表达式都被置于两个正斜杠之间:例如//就是由正斜杠界定的正则表达式,他将匹配被查找的行中任何位置出现的相同模式。在正则表达式中,元字符时最重要的概念。

元字符

定义:元字符是这样的一类字符,他们表达的是不同于字面本身的含义

分类:基本正则表达式字符和扩展正则表达式字符

基本正则表达式字符

^        行首定位符
$        行尾定位符
.          点,匹配任意单个字符
*        匹配前导符0到多次

.*

任意多个字符
[] 匹配指定范围的一个字符
[-] 匹配指定范围的一个字符,连续的范围
[^]

匹配不在指定组内的字符

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

\

用来转义元字符(‘’  “”  \  ),脱义符

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

\<

词首定位符

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

\> 词尾定位符
()

\(\)   匹配稍后使用的字符的标签

:3,9 s/\(.*)/#\1/   加注释

:3,9 s/\(#\)\(.*)/\2\1/   将#号移到最后

s替换   \原来\现在\

x\{m\}

字符x重复出现m次

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

x\{m,\} 字符x重复出现m次以上
x\{m,n\} 字符x重复出现m次到n次

扩展正则表达式字符

+

匹配1-n个前导字符

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

匹配0-1个前导字符

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

a|b

匹配a或b

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

()

组字符

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

示例1:

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

示例2:

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

二、grep

过滤,查找文件中的内容

分类:grep,egrep和fgrep

返回值:

  • 0   是找到了
  • 1   是没有
  • 2找的地方不对

示范:

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

参数:

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

练习

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

三、sed(逐行处理模式)

1.前言

sed,流编辑器,StreamEditor,sed是一种在线的,非交互式的编辑器,他一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区,成为“模式空间”,接着用sed命令处理缓冲区的内容,处理完成后,把缓冲区的内容送至屏幕。接着处理下一行,这样不断重复,指导文件末尾,文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件,简化对文件的反复操作。

2.格式

  1. sed  选项   命令   文件
  2. sed  选项  -f   脚本文件

3.返回值

都是0,对错不管

只有当命令存在语法错误时,sed的退出状态才是非0

4.sed和正则表达式

与grep一样,sed在文件中查找模式是也可以使用正则表达式(RE)和各种元字符。正则表达式是括在斜杠间的模式,用于查找和替换,以下是sed支持的元字符

  • 使用基本元字符集    ^,$,.,*,[],[^],\<,\>,\(\),
  • 使用扩展元字符集    ?,+,|,()
  • 使用扩展元字符的方式    \+ 转义    sed  -r   加-r       -i是写入

5.汇总示例

删除命令:d Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维
替换命令:s Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维
读文件命令:r Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维
写文件命令:w(另存为) Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维
追加命令:a(之后)

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

插入命令:i(之前) 与a相反,i插入到行前
替换整行命令:c Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维
获取下一行命令:n Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维
反向选择:! Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维
多重编辑:e

在一条命令中发布多条指令

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

一行针对多条命令一定要用括号括起来

sed  -r    '/root/{n:d}'  passwd

6.实战案例

1.删除配置文件中的#号注释行

sed   -r    '/^#/d'   /etc/sanba/smb.conf

2.修改文件

 sed -ri  '$a\chroot_local_user=YES' /etc/vsftpd/vsftpd.conf

 sed -ri  '/^SELINUX=/c  SELINUX=disabled' /etc/selinux/config

3.给文件行添加注释

sed -r  '2,6s/^/#/' a.txt

sed -r  '2,6s/(.*)/#\1/'  a.txt

sed -r  '2,6s/.*/#&/'   a.txt

4.sed中使用外部变量

准备工作   var1=11111

追加变量   

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

巧合

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

四、awk

1.前言

        awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理,数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,
awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕)。

2.工作原理

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

3.语法

awk    [options]    'command'    filenames(推荐)

==options 例如:-F 定义输入字段分隔符,默认的分隔符是空格或制表符(tab)

==command(时空):

  • BEGIN{}         begin发生在行处理前(注意大写) 
  • {}                    行处理时,读一次执行一次 (现在)
  • END{}             行处理后

示例

awk  'BSGIN{print 1/2}  {print "OK"}  END{print "-------------"}'    /etc/hosts

awk  'BSGIN{print 1/2}{print "OK";print $0}END{print "hoho"}'    /etc/hosts

4.内部变量

FS

输入字段分隔符

(默认空格

awk -F:'print $1, $3' /etc/passwd | head -1

awk -F‘[:\t]’ {print $1,$2,$3} /etc/passwd

awk ‘BEGIN{FS=":"} {print $1,$3}’  /etc/passwd

OFS 输出字段分隔符 awk ‘BEGIN{FS=":";OFS="---"} {print $1,$3}’  /etc/passwd
RS 输入记录(行)分隔符,默认换行符 Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维
ORS 输出记录(行)分隔符,默认换行符 Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维
FNR 多文件独立编号 Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维
NR 多文件汇总编号 Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维
NF 字段总数 Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

5.模式化输出

print(函数)

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

6.模式(正则表达)和动作

1.前言

        任何awk语句都由模式和动作组成。模式部分决定动作语句何时触发及触发事件如果省略模式部分,动作将时刻保持执行状态。每一行都会有动作。模式可以是任何条件语句或复合语句或正则表达式。有模式的话,就是对模式对应的行进行动作

2.字符串比较

awk  '/^root/   /etc/passwd         //是正则匹配

awk  '$0 ~ /^root/  /etc/passwd    ~像

awk '$0! ~ /^root/'  /etc/passwd

awk  -F;'$1~ /^root/'  /etc/passwd

3.数值比较

        比较表达式采用对文本进行比较,只有当条件为真,才执行指定的动作。比较表达式使用关系运算符,用于比较数字与字符串

关系运算符

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

算数,运算

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

4.多条件

逻辑操作符和复合模式

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

范围模式

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

7.awk脚本编程

1.变量

awk调用变量

>1自定义内部变量  -v

awk  -v  user=root   -F: '$1==user'  /etc/passwd      -v定义变量

>2外部变量“ ‘ ”

双引号

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

单引号

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

2.条件&判断

if语句

        格式: {if(表达式){语句;语句;...} }

        示例:需求 :如果$3是0,就说他是管理员
                  awk -F: '{if($3==0) {print $1 " is administrator."}}'  /etc/passwd

if..else语句

        格式:{if(表达式){语句;语句;...} else {语句;语句;...}}

        示例: awk -F: {if($3==0) {print $1"是管理员“} else { print  $1"普通用户" }}’  passwd

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

if..else if..else语句

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

3.循环

while

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

for

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

4.数组

定义数组

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

索引遍历    for(i  in  username)  username加[]i是值,不加i是索引

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

5.awk编程案例-统计/etc/passwd中各种类型shell的数量

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维

8.一问一答

Liunx shell编程及自动化运维实现--第五章三剑客,自动化,运维文章来源地址https://www.toymoban.com/news/detail-833481.html

到了这里,关于Liunx shell编程及自动化运维实现--第五章三剑客的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux编程Shell自动化脚本】03 shell四剑客(find、sed、grep、awk)

    语法格式 参数说明 : path 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。 expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。 1. 常用expression 以下列出

    2024年02月09日
    浏览(51)
  • 云计算的自动化与脚本:实现高效运维

    云计算是一种基于互联网和服务器集群的计算模式,它允许用户在需要时从任何地方访问计算资源。自动化和脚本在云计算中发挥着至关重要的作用,因为它们可以帮助管理员更高效地运行和维护云计算环境。在本文中,我们将探讨云计算自动化和脚本的核心概念、算法原理

    2024年04月12日
    浏览(43)
  • 运维工作新时代:自主编码实现运维自动化的转型之旅

    随着业务系统和底层中间件服务的复杂度不断增加,传统手工运维方式面临着诸多挑战和限制。人工编写运维脚本显得非常低效,同时手动执行运维操作存在着巨大风险。在此情况下,推动运维自动化成为运维人员必须落地实施的工作。运维同学如果可以有地方自主通过编码

    2024年02月22日
    浏览(38)
  • 利用Python实现网络运维自动化:实战示例

    💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】 🎖️ 一站式轻松构建小程序、Web网站、移动应用:👉注册地址 🤟 基于Web端打造的:👉轻量化工具创作平台 💅 想寻找共同学习交流,摸鱼划水的小伙伴,请点击【全栈技术交流群】 随着网络规模的不断扩大

    2024年04月11日
    浏览(73)
  • 【操作系统】Liunx项目自动化构建工具-make/Makefile

                 Yan-英杰的主页 悟已往之不谏 知来者之可追   C++程序员,2024届电子信息研究生 目录 一、背景 二、Makefile         实现         Makefile依赖         依赖关系         makefile的工作原理         项目清理         补充:         .PHONY是什么?  

    2024年02月16日
    浏览(39)
  • 自动化运维中的人工智能与机器学习:实现智能化运维

    自动化运维(Automated Operations)是一种通过自动化工具和技术来管理和维护计算机系统的方法。随着云计算、大数据和人工智能等技术的发展,自动化运维的重要性逐渐凸显。人工智能与机器学习在自动化运维中发挥着越来越重要的作用,为智能化运维提供了强大的支持。 本文

    2024年03月10日
    浏览(109)
  • 在Linux上配置Spug自动化运维平台,实现公网远程访问

    Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。 本例演示搭建使用docker compose 方式安装Spug,并结合cpolar 内网穿透实现远程

    2024年02月07日
    浏览(38)
  • 简单的Shell脚本实现自动化构建部署-适合前后端分离的小网站

    大家在生活中经常会自己写一点小代码。然后部署在公有云的服务器上。但是一般像阿里,腾讯等服务商,提供的机器内存并不是很大。如果想装入一个jenkins之类的服务,会比较占用CPU和内存的资源。但是人手的部署又是比较麻烦的。所以我这里提供了一个思路,使用shell脚

    2023年04月16日
    浏览(66)
  • 基于云计算的自动化部署与自动化运维:提高运维效率

    作者:禅与计算机程序设计艺术 随着互联网技术的飞速发展,网站流量日益增长,用户对网站功能及其可用性的需求也越来越高,越来越多的人开始担忧网站的安全和稳定性。因此,如何快速、准确地处理网站故障、迅速恢复网站服务并保障网站高可用,成为企业必须重点关

    2024年02月11日
    浏览(41)
  • 如何使用Python实现FPGA编程“自动化”

    之前读到过一个公众号文章,写了关于《使用Python实现Vivado和Modelsim仿真的自动化》,连接https://mp.weixin.qq.com/s/2YR_LjpQNtJr9beqnCz7CA。根据该文章,基于自己的编程习惯和工作需要,我做了一些修改和便于自己编程的一些python代码,这里和大家介绍一下。 对于生成的tb文件使用了

    2023年04月14日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包