1、显示/etc/rc.d/rc.sysinit文件中以不区分大小的h开头的行;
[root@cotenos ~]# grep -i ^h /etc/passwd
halt:x:7:0:halt:/sbin:/sbin/halt
# -i:表示忽视大小写
# ^:表示匹配行首
2、显示/etc/passwd中以sh结尾的行;
[root@cotenos ~]# grep sh$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
test:x:1000:1000:test:/home/test:/bin/bash
anni:x:1002:1002::/home/anni:/bin/bash
rhel:x:1003:1003::/home/rhel:/bin/bash
test01:x:1004:1004::/home/test01:/bin/bash
# $:表示匹配行尾
3、显示/etc/fstab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;
[root@cotenos ~]# grep -E "^# +[^ ].*" /etc/fstab
# /etc/fstab
# Created by anaconda on Sun Oct 30 21:40:01 2022
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#-E:表示使用扩展表达式
#+:表示匹配一次以上
#[^ ]:对集合取反,匹配空格以外的字符
#.*:表示匹配任意字符任意多次
4、查找file中包含“以to开始并以to结尾”的字串行
[root@cotenos ~]# cat file
to sjdfkljdflto
to ff
to od
to
[root@cotenos ~]# grep -E "^to.*to$|^to$" file
to hello world to
to
# |:是扩展正则,所有需要使用-E
5、查找/etc/inittab中含有“以s开头,并以d结尾的单词”模式的行
[root@cotenos ~]# grep -w "s[a-Z]*d" /etc/inittab
或者
[root@cotenos ~]# grep -E "\<s[a-Z]*d\>" /etc/inittab
# inittab is no longer used when using systemd.
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#注意不可以使用^s,^s表示从每一行的第一个字符开始匹配,同样也不可以使用d$
# sd之间不可以使用.*(s.*d),这样的话会将空格匹配进去;
# \<s:词首锚定符,匹配以s开头的单词
# d\>:词尾锚定符,匹配以d结尾的单词
6、查找ifconfig命令结果中的1-255之间的整数
ifconfig | grep -Ew "[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]"
7、显示/var/log/secure文件中包含“Failed”或“FAILED”的行
[root@cotenos ~]# grep -Ew "(Failed|FAILED)" /var/log/secure
8、在/etc/passwd中取出默认shell为bash的行;
[root@cotenos ~]# grep "bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
test:x:1000:1000:test:/home/test:/bin/bash
anni:x:1002:1002::/home/anni:/bin/bash
rhel:x:1003:1003::/home/rhel:/bin/bash
9、以长格式列出/etc/目录下以ns开头、.conf结尾的文件信息;
[root@cotenos ~]# ls -l /etc/ | grep -w "ns.*.conf$"
-rw-r--r--. 1 root root 1949 Oct 30 21:41 nsswitch.conf
#-w:以单词格式匹配
#ns前不可使用^,.conf后必须加$
10、高亮显示passwd文件中冒号,及其两侧的字符
[root@cotenos ~]# grep ".:." /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
11、删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符
[root@cotenos ~]# sed 's/^[[:space:]]*//' /etc/grub2.cfg
#[[:space:]]:表示空格
12、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
[root@cotenos ~]# sed -r 's/^#[[:space:]]+//' /etc/fstab
#
/etc/fstab
Created by anaconda on Sun Oct 30 21:40:01 2022
#
Accessible filesystems, by reference, are maintained under '/dev/disk'
See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=39265356-a6c9-41da-bf4c-1fc92b1d638a /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
# -r:表示使用扩展正则
# +:表示匹配一次或者多次(扩展正则)
13、在/etc/fstab 每一行行首增加#号
[root@cotenos ~]# sed 's/./#&/' /etc/fstab
##
## /etc/fstab
## Created by anaconda on Sun Oct 30 21:40:01 2022
##
## Accessible filesystems, by reference, are maintained under '/dev/disk'
## See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
##
#/dev/mapper/centos-root / xfs defaults 0 0
#UUID=39265356-a6c9-41da-bf4c-1fc92b1d638a /boot xfs defaults 0 0
#/dev/mapper/centos-swap swap swap defaults 0 0
# &:表示被替换的内容
14、在/etc/fstab文件中不以#开头的行的行首增加#号
[root@cotenos ~]# sed 's/^[^#]/#&/' /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Oct 30 21:40:01 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
#/dev/mapper/centos-root / xfs defaults 0 0
#UUID=39265356-a6c9-41da-bf4c-1fc92b1d638a /boot xfs defaults 0 0
#/dev/mapper/centos-swap swap swap defaults 0 0
15、利用sed 取出ifconfig命令中本机的IPv4地址
[root@cotenos ~]# ifconfig | sed -nE '2s/^[^0-9]+([0-9.]*).*/\1/p'
#-n:表示屏蔽默认输出
#-E:支持扩展正则
# 2:表示对第二行进行处理
#([0-9.]*):表示将括号的内容复制给第一个位置
#\1:表示将第一个位置的内容输出
#p:表示打印
16、关闭本机SELinux的功能
[root@cotenos ~]# sed -irn '7s/(enforcing|permissive)/disabled/p' /etc/selinux/config
#-i:表示直接修改源文件
#-r:使用扩展正则
17、在/etc/hosts配置文件中添加内容
#在第一行添加 hello world
[root@cotenos ~]# sed '1i holle world' /etc/hosts
holle world
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6