shell训练计划30天之第四天

 

一、什么是正则表达式

正则是一串有规律的字符串

正则是表写变成语言所必须,可以实现很多比较复杂的需求。

grep、sed、awk是shell三剑客

二、相关命令

1.grep

过滤关键词

-c 行数

-i 不区分大小写

-n 显示行号

-v 取反 不显示关键词内容

-r 遍历所有目录

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

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

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

例子

grep -n 'root' /etc/passwd

grep -nv 'nologin' /etc/passwd

grep '[0-9]' /etc/passwd                             过滤出passwd中含有0-9任何一个数字的行

grep -v '[0-9]' /etc/passwd                         过滤出passwd中不含数字的行

grep -v '^#' /etc/passwd                            ^是以***开头 过滤出不是以#开头的行

grep -v '^#' /etc/passwd | grep -v '^$'        过滤出不以#和$开头的行

grep‘^[^0-9]’ [^0-9]                                    表示非数字,此时的^表示 非

grep '^[^a-zA-Z]' test.txt                            过滤出不是以字母开头的行

grep ‘r.o’                                                    r.o中的.表示任意的字符,即r和o中间可以有任意个任意字符

grep ‘o*o’                                                   o*o中的*表示*左边的字符可以重复N次

grep ‘.*’                                                     .*表示任意个任意字符

grep ‘o\{2\}’ /etc/passwd                            {}表示范围 需要配合脱意符\,或者使用egrep

o\{2\}                                                          表示两个o,如果不想使用脱意符可以使用egrep或者grep -e;()表示整体

egrep -e ‘o+o’ passw                                 d +的意思+前面字符一次或多次(不包括0)

egrep ‘oo?’ passwd                                   ?表示?前面字符的0次或一次

egrep ‘root|nologin’ /etc/passwd                |表示或者

egrep '(oo){2}' /etc/passwd                        过滤含有oooo的行

2.sed

查找-替换——用于替换指定的字符

sed -n '/root/'p test.txt                                 查找root字符

sed -e '1'p -e '/111/'p -n test.txt

sed -n '/bus/'Ip test.txt                                匹配bus,I表示不区分大小写

sed '1,10s/root/toor/g' test.txt                     将1-10行中的root 换成toor

head test.txt | sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1'

第一个([^:]+)表示任意多个非:的字符,

.*表示任意个任意字符,

第二个([^:]+)表示任意多个非:的字符,

以上命令将文本内容定义为三段,\3:\2:\1的意思为将第一段位置更改到最后将第三段位置更改到最前

-r 可以不使用脱意符

-e 执行多个操作,可以写多个

$ 表示末行

-d 删除指定行(不更改文件实际内容)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值