位置: 编程技术 - 正文

Shell正则表达式之grep、sed、awk实操笔记(shell正则表达式语法)

编辑:rootadmin

推荐整理分享Shell正则表达式之grep、sed、awk实操笔记(shell正则表达式语法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:Shell正则表达式获取指定字符串,shell正则表达式替换,shell正则表达式匹配,shell正则表达式[abc]d,今天匹以下哪些字符串,shell正则表达式匹配,Shell正则表达式获取指定字符串,shell正则表达式提取字符串,shell正则表达式匹配,内容如对您有帮助,希望把文章链接给更多的朋友!

最近一直在研究shell脚本这块,刚好闲下来整了下自己手头上比较好的资料中的一些范例,以下是我整理的鸟哥私房菜里面正则表达式里面比较基础的一些语法详解,适合新手查阅。

首先先复制一段范例:设置语系为C

grep

1.搜寻特定字符串"the"注: n为显示行号

2.反向搜寻特定字符串"the"

3.取得任意大小写"the"的这个字符串

4.利用括号 [] 来搜寻集合字符搜索test或taste这两个单词时,发现他们有共同的't&#;st',所以可以这么搜寻这样其实就是在找t[a]st和t[e]st这两个分开的字符如果搜索有 oo 的字符时,则可以使用:如果搜索oo时不想搜到 oo 前面有 g 的话,我们可以利用反向选择[^]来达成:如果搜索oo前面不想有小写字符,则:注: 大写英文/小写英文/数字 可以使用 [a-z]/[A-Z]/[0-9]等方式来书写,也可以写在一起[a-zA-Z0-9]表示要求字符串是数字以及英文如果我们要取得有数字的那行,则:注:但考虑到语系对编码顺序的影响,因此除了连续编码使用减号[-]外,也可以用[:lower:]代替a-z 以及 [:digit:] 代替0-9 使用

5.显示行首为'the'的字符串显示行首是小写字符

6.显示行尾为点 . 的那一行

7.显示5-9行数据

8.显示空白行

9.找出g&#;&#;d字符串,起头g结束d的四个字符串

. o*代表空字符(就是有没有字符都可以)或者一个到N个o字符,所以grep -n 'o*' regular_express.txt就会把所有行全部打印出来,.oo*代表o+空字符或者一个到N个o字符,所以grep -n 'oo*' regular_express.txt就会把o,oo,ooo等的行全部打印出来."goo*g"代表gog,goog,gooog...等

.找出含g...g字符串的行注: .代表任意字符, .*则就代表空字符或者一个到N个任意字符

.找出含有数字的行或# grep -n '[0-9]' regular_express.txt

.找出含两个o的字符串注:{}因为在shell里有特殊意义,所以需要加跳脱符来让其失去意义找出g后含2到5个o然后以g结尾的字符串找出g后含2以上的o然后以g结尾的字符串总结:^word 表示带搜寻的字符串(word)在行首word$ 表示带搜寻的字符串(word)在行尾. 表示1个任意字符 表示转义字符,在特殊字符前加会将原本的特殊字符意义去除* 表示重复0到无穷多个前一个RE(正则表达式)字符[list] 表示搜索含有list的字符串[n1-n2] 表示搜索指定的字符串范围,例如[0-9] [a-z] [A-Z]等[^list] 表示反向字符串的范围,例如[0-9]表示非数字字符,[A-Z]表示非大写字符范围{n,m} 表示找出n到m个前一个RE字符{n,} 表示n个以上的前一个RE字符egrep总结:+ 表示重复一个或一个以上的前一个RE字符范例:egrep 'go+d' regular_express.txt表示搜寻(god)(good)(goood)...等等字符串,o+代表[一个以上的o]&#; 表示重复零个或一个的前一个RE字符范例:egrep 'go&#;d' regular_express.txt表示搜寻(gd)(god)字符串,o&#;代表[空的或1个o]注:egrep下'go+d'和'go&#;d'的结果集合就等于grep下的'go*d'| 表示用或(or)的方式找出数个字符串范例:egrep 'gd|good|dog' regular_express.txt表示搜寻(gd)或(god)或(god)字符串,|代表或() 表示找出群组字符串范例:egrep 'g(la|oo)d' regular_express.txt表示搜寻(glad)或(good)字符串() +表示找出多个重复群组的判别范例: echo 'AxyzxyzxyzxyzxyzC'|egrep 'A(xyz)+C'表示搜寻开头是A结尾是C,中间有一个以上的'xyz'字符串

sed:

插入:

1.将/etc/passwd 的内容列出并打印行号,同时,将2-5行删除显示注: sed是sed -e的简写, 后接单引号同上删除第2行同上删除第三行到最后一行

2.在第二行后加上一行test

在第二行前加上一行test在第二行后加入两行test

替换行:

3.将2-5行内容取代为 No 2-5 number

Shell正则表达式之grep、sed、awk实操笔记(shell正则表达式语法)

4 列出/etc/passwd 内第5-7行

替换字符串:

sed 's/被替换字符串/新字符串/g'

1.获取本机IP的行将IP前面的部分予以删除将IP后面的部分删除

2.用grep将关键词MAN所在行取出来删除批注行删除空白行

3.利用sed将regular_express.txt内每一行若为.的换成!注:-i参数会直接修改文本,而并非直接输出

4.利用sed在文本最后一行加入 #This is a test注: $代表最后一行 a代表行后添加将selinux配置文件enforcing改成disabled延伸正规表示法:延伸写法:

1. +表示重复一个或一个以上的前一个RE字符

例如:egrep -n 'go+d' regular_express.txt普通写法: grep -n 'goo*d' regular_express.txt

2. &#;表示重复零个或一个前一个RE字符

例如: egrep -n 'go&#;d' regular_express.txt

3. |表示用或的方式找出数个字符串

例如: egrep -n 'gd|good' regular_express.txt

4. ()表示找出群组字符串

例如: egrep -n 'g(la|oo)d' regular_express.txt也就是搜寻(glad)或good这两个字符串

5. ()+多个重复群组判别

例如: echo 'AxyzxyzxyzxyzC'|egrep 'A(xyz)+C'

也就是要找开头是A结尾是C 中间有一个以上的'xyz'字符串的意思

awk:

1.用last取出登陆数据前五行取出账号与登陆者IP,且账号与IP之间以TAB隔开注:$1代表用空格或TAB隔开的第一个字段,以此类推。。 $0代表该行全部字段注: NF代表每一行的$0的字段总数 NR代表目前awk所处的是第几行数据 FS代表目标分隔符,默认为空格

2.在/etc/passwd中以:来作为分段字符,则我们要查阅第三栏小于以下的数据,并只列出账号与第三栏注:查询结果未显示第一行数据,是因为我们虽然定义了FS=":" 但却只能在第二行生效想读取第一行就需要BEGIN这个关键词:

df:比较两个文件的差异:

实例:1。统计TCP连接状态过滤出以tcp开头的行,“^”为正则表达式用法,以...开头,这里是过滤出以tcp开头的行。S[]定义了一个名叫S的数组,在awk中,数组下标通常从 1 开始,而不是 0。NF当前记录里域个数,默认以空格分隔,如上所示的记录,NF域个数等于$NF表示一行的最后一个域的值,如上所示的记录,$NF也就是$6,表示第6个字段的值,也就是SYN_RECV或TIME_WAIT等。S[$NF]表示数组元素的值,如上所示的记录,就是S[TIME_WAIT]状态的连接数++S[$NF]表示把某个数加一,如上所示的记录,就是把S[TIME_WAIT]状态的连接数加一结果就是显示S数组中最终的数组值例:S[TIME_WAIT]=最终值 S[TESTABLISHED]=最终值ENDfor(key in S)遍历S[]数组print key,”t”,S[key]打印数组的键和值,中间用t制表符分割,显示好一些。

3个备份系统文件并邮件发送的Shell脚本分享 1.安装MUTT邮件客户端#yuminstallmutt-y2.创建脚本#vi/etc/rc.d/mail_to_bak_daily.sh版本一:#!/bin/bash#=========================================================#请输入,你想让备

CentOS 6.3下给PHP添加mssql扩展模块教程 如果在LINUX系统上需要使用PHP连接MicrosoftSQLServer数据库,我们常见的连接数据库方式是使用ODBC方式连接.FreeTDS为Linux系统提供了TDS协议的开源客户端。

监控网站是否可以正常打开的Shell脚本分享 最近刚好需要测试一下新建站的稳定性,所以写了个SHELL脚本放到本机(最近换了mac本),能够实时查看你需要监控的WEB页面状态,并发送到指定邮箱.这里赞一

标签: shell正则表达式语法

本文链接地址:https://www.jiuchutong.com/biancheng/378324.html 转载请保留说明!

上一篇:Linux下实现SSH免密码登录和实现秘钥的管理、分发、部署SHELL脚本分享(linuxssh免密登录)

下一篇:3个备份系统文件并邮件发送的Shell脚本分享(备份系统三要素)

  • 进入税金及附加怎么算
  • 小企业会计准则下退企税分录
  • 计提所得税分录计提的时候金额比实际缴纳多
  • 关税完税价格是指什么意思
  • 全球第一家上市的互联网电商平台
  • 个体户需要给员工交保险吗
  • 定额备用金与非定额备用金的会计分录
  • 普通发票税额没有打印全可以用么
  • 退休职工能否扣医保
  • 公章损坏更换的费用怎么记账
  • 支付货代运费账务处理
  • 增值税发票跨年抵扣新政策
  • 企业向个人借款是否合法
  • 第一次开电子普票怎么开
  • 预付账款收不回发票怎么核销
  • 安装设备领用自产产品按成本还是计税价格
  • 代驾费开增值税专票还是普票?
  • 企业所得税负数会计分录
  • 2018年用2015年的发票入账有什么税务的风险?
  • 税会差异例子
  • 信用等级D可以贷款吗
  • 现金流量表编制依据和方法
  • 信用减值损失借贷方向增减
  • 工程施工直接费用包括哪些
  • 城建税计税依据及税率
  • 发票可以作为原始凭证吗
  • 出售汽车属于什么费用
  • 视同销售收入如何调整?
  • 政府补助不征税条件
  • 返利销售会计处理办法
  • 土地合并需要什么资料
  • 资产负债表中资产项目的排列顺序是
  • php日期时间运算汇总
  • linux shell语句
  • 如何处理库存差异问题
  • 房东压我押金怎么办
  • 大白菜一键装机教程
  • linux中qq怎么添加快捷键启动功能?
  • cyb2k.exe是安全进程吗 cyb2k进程危险吗
  • 判断企业存货过多的判断方法
  • 完工产品成本怎么算
  • 双轨制会计核算原则
  • CodeIgniter针对数据库的连接、配置及使用方法
  • php运用
  • Spring Security(七)-- AuthenticationProvider
  • php的do while语句
  • 委托代销商品支付的手续费计入什么科目
  • 金税盘已作废发票可以取消吗
  • 增值税抵扣比例是多少
  • sql server2005备份
  • 专票已认证还能作废吗
  • 服务业的收入确认原则
  • 企业专项资金购买固定资产
  • 无息的银行承兑汇票
  • 损益平准金是什么会计科目
  • 报关单新版
  • 出口转内销进项税额怎么进附表二
  • 盈余和利润是不是一个概念
  • windows预览版计划
  • 如何卸载独显
  • u盘安装启动盘
  • 如何创建虚拟硬盘
  • 如何清理浏览器缓存
  • linux分割分区
  • 浅谈linux的发展方向和应用范围
  • linux常用命名
  • win10怎么关闭欢迎界面
  • win7电脑弹窗多怎么解决
  • 常用的linux系统版本有哪些
  • 铁嘴大师
  • font:inherit
  • 怎么做小地图图片呢
  • 批处理删除指定后缀名
  • jQuery实现ToolTip元素定位显示功能示例
  • nodejs使用场景
  • 税控盘状态
  • 江苏电子税务局官网登录入口
  • 怎样进行造林面积检查验收
  • 四川省税务局税费服务支持中心工作人员编制
  • uk怎么添加发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设