DAY4

1、正则介绍_grep(上)

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来

创建grep目录:

mkdir grep

进入greo目录:

cd grep/

拷贝passwd到当前目录:

cp /etc/passwd .

在passwd文件中过滤出带nologin的行:

grep ‘nologin’ passwd

查看grep绝对路径:
在这里插入图片描述

-c显示行数,查看passwd有多少行:

-n显示行号,显示passwd每行行号:

在这里插入图片描述

-i不区分大小写,不区分大小写,将任意一行nologin改成大写:

grep -ni ‘nologin’ passwd

-v取反,显示不带nologin的行,并且反向取行

grep -nvi ‘nologin’ passwd
在这里插入图片描述

-r 遍历所有子目录、孙目录;不加-r,只能显示文件:

grep -r root /etc/
在这里插入图片描述

-A后面跟数字,过滤出符合要求的行以及下面的n行:

-B后面跟数字,过滤出符合要求的行以及上面的n行:

-C后面跟数字,过滤出符合要求的行以及上下的n行:

2、grep(中)grep的正则表达

过滤出带数字的行:

grep ‘[0-9]’ passwd

[0-9]表示零到九,过滤出不带数字的行:

grep -v ‘[0-9]’ passwd

grep -vn ‘[0-9]’ /etc/inittab

在这里插入图片描述

^#表示以#号开头的行,过滤出以#号开头的行,并显示行号:
在这里插入图片描述

过滤出不以#号开头的行

grep -vn ‘^#’ passwd

^在中括号里面表示取反,在外面表示以什么开头

'[^0-9]'表示非纯数字的行,过滤出非纯数字的行

在这里插入图片描述

'[0-9]'表示非数字开头的行,过滤出非数字开头的行:

grep ‘[0-9]’ inittab
在这里插入图片描述

3、greo/egrep示例

‘r.o’ . 表示任意的一个字符,过滤出带r.o的行

在这里插入图片描述

'oo’ * 表示号左边的字符重复0到n次,过滤出带’o*o’的行:

在这里插入图片描述

'.*'表示任意个任意字符,显示所有行

'o{2}'表示两个o,过滤出带两个o的行

grep ‘o{2}’ passwd

'o+o’表示加号前面有一个或多个o

在这里插入图片描述

'o?t’问号表示,问号前面字符出现零次或1次

'root|nologin’表示匹配root或者nologin

egrep ‘root|nologin’ passwd

4、sed(上)
sed(主要有替换功能)

创建sed目录

mkdir sed

拷贝passwd到当前目录,重命名为test

cp …/grep/passwd test

过滤出带root的行,’//'固定格式,-p打印所有,-n过滤有关行

sed -n '/root/'p test
在这里插入图片描述

-r表示褪意

sed -n '/o+t/'p test

sed -nr '/o+t/'p test
在这里插入图片描述

过滤出指定的行

sed -n '2’p test

过滤出2到5行

sed -n '2,5’p test
在这里插入图片描述

过滤出15行到最后一行

sed -n '15,$'p test

-e可以同时写多个表达式

sed -e '1’p -e '/bus/'p -n test
在这里插入图片描述

4、sed(下)

'/bus/'IP过滤出带bus的行,I表示不区分大小写

sed -n '/bus/'Ip test

去掉1到15行,显示后面的行,d表示不显示

sed '1,15’d test
在这里插入图片描述

-i表示删除 删除1到15行

删除user2相关的行

sed -i '/user2/'d test

把test文件1到10的root全部替换成toor,s表示替换的关键词,g表示全局替换

sed ‘1,10s/root/toor/g’ test

把1到10行的ro+替换成r,head只显示1到10行,-r表示褪意,s是替换关键词

sed -r ‘1,10s/ro+/r/g’ test |head

替换以:为分隔符的第一行后最后一行。[^:]表示非:的字符,+表示匹配一个或多个字符,()表示命令组,前面用小括号扩起来的,后面要用\数字表示它。3表示第三段,2表示第二段,1表示第一段。

head test |sed -r ‘s/([:]+)?.*)?[:]+)/\3:\2:\1/’

把/root换成123

head test |sed ‘s//root/123/g’

把文档里面的所有英文字符删除掉,[a-zA-Z]表示所有字母

head test |sed ‘s/[a-zA-Z]//g’

把所有行前面加上aaa,(.)表示一整行,&表示(.)

head test |sed -r ‘s/(.*)/aaa:&/’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值