Part4.2——shell中的文本处理工具

目录

一、grep

grep的文本匹配

​编辑

grep的字符数量匹配规则

二、sed

命令用法

对字符的处理

字符替换:

练习及脚本

三、awk

四、本章总结:


一、grep

扩展用法: grep -E = egrep

grep的文本匹配

基本用法grep 匹配条件 处理文件
grep root passwd#过滤文件passwd中的root关键字
grep -i root passwd#省略大小写
grep -E "\<root" passwd#root之前不能有字符
grep -E "root\>" passwd

#root之后不能有字符

grep   -数字#显示过滤行以及上面和下面几行
grep -n #显示匹配的行所在行号
grep -A5#显示过滤行及下面5行
grep -B3#显示过滤行及上面3行
grep -v        反向过滤

 

grep的字符数量匹配规则

注意:涉及到通配符时,必须使用<egrep>或者<grep -E>命令才能识别

^westos以westos开头w....sw开头s结尾中间四个任意字符
westos$以westos结尾.....ss结尾前5个任意字符
*字符出现任意次字符出现0到1次
+字符出现1次以上{ n }字符出现n次
{ m , n }字符出现m到n次{ 0 , n }字符出现0到n次
{  , n }字符最多出现n次{ m , }字符最少出现m次
(lee){ 2 }lee字符串出现2次

 

二、sed

命令用法

sed 参数 命令 处理对象
sed 参数 处理对象 -f 处理规则文件

对字符的处理

p——显示

sed -n 5p westos#显示第五行
sed -n 3,5p westos#显示第3到5行
sed -ne "3p;5p" westos#显示第3和5行
sed -ne 1,5p westos#显示1-5行
sed -ne '5,$p' westos#显示第五行以后
sed -n '/^#/p' fstab#显示以#开头的行

d——删除

sed 5d passwd#删除第五行
sed '/^#/d' fstab#删除以#开头的行
sed '/^UUID/!d' fstab#除了UUID开头的行都删除

a——添加

sed -e '$a hello world' fstab#在fstab文件的最后一行添加hello world
sed -e '$a hello\nworld' fstab#在fstab文件的最后一行添加hello\nworld
sed -e '/^#/a hello world' test#在以#开头的行的下一行添加hello world

c——替换

sed -e '/^#/c hello world' fstab#所有#开头的行都替换为hello world
sed -e '5c hello world' fstab#第五行替换为hello world

w——把符合条件的行重新写入到新文件中

#把fstab中以UUID开头的行重定向到fstab_new文件中
sed '/^UUID/w fstab_new' fstab 

i——插入

#在第五行之前插入hello,插入后,被插入的内容为第五行
[root@shell_1 test]# sed '5i hello' test

r——整合文件

[root@shell_1 test]# cat test
1
3
4
#1
#3
[root@shell_1 test]# cat test1 
2
[root@shell_1 test]# sed '1r test1' test   #在test文件的第一行后插入test1文件的内容
1
2
3
4
#1
#3

替换:

<sed -n '$=' fstab>: 可以用来统计文件的总行数

<sed '1rlinux2' linux1>:把linux2中的内容加到linux1的第一行后。

<sed '/1/rlinux2' linux1>:把linuxn1中的内容加到linux1中每个字符“1”的后边

字符替换:

练习及脚本

Apache_port.sh
此脚本接入数字
http的端口就改为此数字
假设selinux为关闭状态
例如:
sh Apache_port.sh
ERROR: Pleaase input port number following script !!
sh Apache_port.sh 8080
apache的端口会被修改为8080

三、awk

开头打印“westos”,打印第二列,结尾打印“end”

 统计所有行数;统计包含“bash”的行数;打印符合第七列为“bash”的列并统计符合条件的行数;打印不包含bash的行并统计行数。

打印含有“bash”或者“nologin”的行并统计符合条件的行数。

 打印开头是root并且结尾是bash的行,并统计符合条件的数目。

打印第一行所有的列;打印第二行所有的列;打印行号;打印列号。

寻找第7列是bash的并打印所有的列;寻找第7列不是bash的并打印所有的列

练习:

统计在系统中能su切换的、并且用户家目录不在/home下的用户数量。

“\”表示转义字符,否则“/home”中的“/会被认定为”

四、本章总结:

1、grep命令中:涉及到通配符时,必须使用<egrep>或者<grep -E>命令才能识别

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值