shell编程~2.文本处理正则表达式grep | sed | awk

1.grep 文本过滤命令
grep    匹配条件   处理文件

  • grep    root      passwd      只有root小写
  •  
  • grep   ^root      passwd      前面为root
  •  
  • grep    root$     passwd      后面为root
  •  
  • grep -i root      passwd      不区分大小写
  •  
  • grep -E "root|ROOT" passwd    扩展在加其它符号后都要加-E


grep中的正则表达式

  • grep westos file
  •  
  • grep w....s file
  •  
  • grep .....s file
  •  
  • grep w..... file


grep中字符的匹配次数设定
grep  xy file   字符出现[0-任意次]


  -E   x\?y       字符出现y之前x出现[0-1次]

    
  -E   x\+y       字符出现y之前x出现[1-任意次]

 

  •       \{n\}    字符出现[n次]
  •       \{m,n\}  字符出现[最少m次,最多n次]
  •       \{0,n\}  字符出现[0-n次]
  •       \{m,\}   字符出现[至少m次]
  •       x.*y     xy之间任意字符都可匹配


2.sed行编辑器
符合模式条件的处理,不符合条件的不予处理
处理完成之后把缓冲区的内容送往屏幕
接着处理下一行,这样不断重复,直到文件末尾

sed对字符的处理

  • p 显示
  • sed -n ‘/^\#/p'  fstab          只显示#开头的行
  •  
  • sed -n ‘/^\#/!p'  fstab         不显示#开头的行
  •  
  • sed -n ‘/^UUID/p'  fstab         以UUID开头的行
  •  
  • sed -n ‘/1$/p'  fstab            以1结尾的行
  •  
  • sed -n ‘2,6p'  fstab             显示2到6行
  •  
  • sed -n ‘2p;6p'  fstab           显示2行和6行
  •  
  • sed -n ‘/^$/p'  fstab            显示空白行


d删除(用法与显示类似)

  • sed -n ‘/^\#/d'  fstab           删除#开头的行
  • sed -n ‘/^\#/!d'  fstab         删除不是#开头的行
  • sed -n ‘/^UUID/d'  fstab         删除UUID开头的行
  • sed -n ‘2,6d'  fstab             删除2到6行
  • sed -n ‘2d;6d'  fstab           删除2行和6行

a添加

  • sed   ‘/\/etc/a123456'  fstab    在etc行添加123456


i插入

  • sed   ‘/\/etc/i123456'  fstab    在etc行插入123456


c替换

  • sed   ‘/\/etc/c123456'  fstab    将etc行替换成123456


w写入

  • sed   ‘/\/etc/wfile'  fstab      将etc行写入file中
  •  
  • sed  -n ‘/\/etc/='  fstab        etc行在文件中的第几行
  •  
  • sed ‘G’ fstab                    每行加空行隔开
  •  
  • sed ‘=’ fstab                    每行加行号
  •  
  • sed 's/sbin/12345/g' passwd      把全文的sbin换成12345
  •  
  • sed '3s/sbin/12345/g' passwd     把第三行的sbin换成12345
  •  
  • sed '/bin/,/lp/s/sbin/12345/g' passwd  把bin行到lp行的sbin换成12345


3.awk报告生成器
awk会逐行处理文本,支持在处理第一行之前做一些准备工作
以及在处理完最后一行做些总结性质的工作。
BEGIN{}:读入第一行文本前执行,一般用来初始化操作。
{}:逐行处理。
END{}:处理完最后一行文本之后操作,一般用来输出处理结果。

awk基本用法

  • awk '{print NR}' passwd                  显示passwd文件的行数
  •  
  • awk '{print NF}' passwd                  显示文件的列数
  •  
  • awk 'BEDIN{NAME=0}{print $1}' passwd     显示第一列元素1($1)的名字
  •  
  • awk 'BEDIN{a=5;print a+13}' passwd      打印a为5,加13为多少。
  •  
  • awk 'NR==1{print}'    passwd             显示文件第一行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值