shell的正则表达式

##shell中的文本处理正则表达式##
gerp指令

在这里插入图片描述

grep root passwd ##过滤passwd中带root的行##
grep -i root passwd ##忽略大小写##
gerp -i root$ passwd ##已root结尾的##
grep -i ^root passwd ##以root开头的##
grep -iE ^root|root$ passwd ##扩展过滤以root开头和已root结尾的##
grep -iEv ^root|root$ passwd ##反向过滤,输出root在中间和不含root的##
grep -i root passwd |grep -iEv ^root|root$ ##root在中间的##
grep w…s file ##过滤file文件中已w开头,已s结尾,中间有四个字符的项目##
grep w… file ##file文件中已w开头后面有五个字符或者更多的项目##
grep …s file ##file文件中已s结尾前面有五个自古或者更多的羡慕##
grep -E “<…s” file ##文件中已s结尾前面只有五个字符的项目##
grep -E “<w…>” file ##文件中已w开头后面只有五个字符的选项##
grep xy file ##文件中有xy的选项的##
grep xy file ##文件中x出现了任意次,以y结尾的,此处的x必须是连着的##
grep -E “x?y“ file ##文件中x出现了0到1此的##
grep -E “x+y” file ##文件中x出现了1到无数次已y结尾的,此处的xy是一个整体##
grep -E “<x?y>" file ##xy这个整体中x出现了0到一次的
grep -E "<x
y>" file ##x出现了一到无数次,已y结尾的##
grep -E “<x?y>” file ##x出现了0到1次,以y结尾的##
grep -E “<x{1}y>” file ##x只出现了一次以y结尾的##
grep -E “<x{,1}y>" file ##x出现小与一次,以y结尾的##
grep -E “<x{1,}y>" file ##x出现的次数大于等于一次,以y结尾的##
grep -E “<x{1,4}y>" file ##x出现了1次4次的以y结尾的##
grep -E “<(xy)?>" file ##xy这个整体出现了一次的##
grep -E “(xy)?" file ##xy这个整体出现了一次到无数次的##
grep -E “(xy){3,}" file ##xy这个整体出现了3次以上的##
grep -E “(xy){4}" file ##xy这个整体出现了4次的##
grep -E “x.*y” file ##以x开头y结尾的,不论中间出现什么,多少字符的##

##sed##
行编辑器,处理时,把当前处理的行存储在临时缓存区
sed的
命令格式
sed[options]'command’file(s)
sed[options] -f scriptfile file(s)
sed对文字的处理

在这里插入图片描述

操作模式

在这里插入图片描述

sed -n ‘/^&/!p’ fstab ##显示开头不为空的行##
sed -n ‘/^&/!p’ fstab | sed -n ‘/^#/!p’ fstab ##表示开头不为空也不为#的行,这里的感叹号表示不##
sed -n ‘/^UUID/p’ fstab ##表示开头是UUID的行##
sed -n ‘/1$/p’ fstab ##表示结尾是1的行##
sed -n ‘/^#/!p’ fstab ##表示去掉开头是#的行,因为#具有特殊含义,所以加入一个##

d操作模式

在这里插入图片描述

1表示在/etc/fstab中删除以UUID开头的行。2表示删除删除以#开头的行。3表示删除空行
4表示删除第一行和第四行。5表示删除不已uuid开头的行
sed -n ‘/$/d’;’/#/d’ fstab ##删除以#开头的行和空行##
sed -n ‘/^#/d’ fstab ##删除已#开头的行
a操作模式
sed '/^UUID/a \hello sed /etc/fstab ##在/etc/fstab/中的已uuid开头的行下面添加hello##
sed ‘/^uuid/a \hello sed\nwestos /etc/fstab’ ##表示在/etc/fsatb中的以uuid开头的行下面加hello,再次换行加入westos##
c操作模式
sed ‘/^uuid/c \hello sed\nwestos /etc/fstab’ ##表示把/etc/fstab文件中的以uuid开头的行换成hello和下一行westos##
w操作模式

扫描二维码关注公众号,回复: 4381254 查看本文章

在这里插入图片描述

1表示把/etc/fstab/的以uuid开头的行添加到/tmp/下并显示。2表示1的操作但是不显示
3表示显示在/etc/fstab中的以uuid开头的行号。4表示将/etc/issue中的内容添加到/etc/fstab的第六行中
i操作模式表示插入,插入是插入在行之上,添加为添加到行之下
sed ‘/^UUID/i\hello’ /etc/fstab ##表示在/etc/fstab文件中以uuid开头的行下面插入hello

其他用法

在这里插入图片描述

1表示显示fstab中以uuid开头的行号。2表示显示fstab中以uuid开头的行和行号
3表示在data文件中,把brown替换为green,把dog换成green。4表示策略文件对某一文件执行。
5表示把文件中的开头是/的替换为#6表示把文件中的开头是/替换为#,这里的@就表示/。
7表示把文件中的每行的第一个/替换为#。8表示把文件中的每行的所有/都替换为#。

其他用法2

在这里插入图片描述

1表示在文件中的每一行后都加一个空行。2表示在文件中的每一行都加一个空格
3表示在在每一行后面加行号并且行号后面加空格。4表示在文件中显示结尾是p的行号

##awk报告生成器##
awk处理机制,awk会逐行处理文本在命令格式上体现如下
BEGIN{}:读入第一行文本之前执行,一般用来初始化操作
{}:表示逐行处理
END{}:表示处理完最后一条文本之后处理。一般用来输出处理结果
awk的基本用法

在这里插入图片描述

awk的基本用法

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43478840/article/details/84344893