Shell四剑客
1 grep文件内容过滤
grep用于查找文件中符合条件的字符串,它能利用正则表达式搜索文件中的字符串,并把匹配到 的字符串的行打印出来
命令格式:grep [-选项] "查找条件" 目标文件
常用选项:
#以行号形式输出
-i #忽略字符串大小写
-v #显示不包含匹配的行(排除)
常用正则表达式符号
^字符串 #匹配以什么什么开头的行
字符串$ #匹配以什么什么结尾的行
^$ #显示空行
grep命令示例
#过滤包含root关键字的行
[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
#以行号形式过滤包含root关键字的行
[root@localhost ~]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# grep -n bash /etc/passwd
[root@localhost ~]# grep -n : /etc/passwd
#忽略大小写过滤
[root@localhost ~]# grep -i -n ssh /etc/passwd
38:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
#排除包含#号的行
[root@localhost ~]# grep -n -v '^#' /etc/fstab
#过滤以root开头的行
[root@localhost ~]# grep ^root /etc/passwd
#过滤以root结尾的行
[root@localhost ~]# grep -n 'root$' /etc/passwd
[root@localhost ~]# grep -n 'bash$' /etc/passwd
#语法错误示范
[root@localhost ~]# grep -n -v '^#' ^$ /etc/fstab
grep: ^$: 没有那个文件或目录
/etc/fstab:1:
/etc/fstab:9:/dev/mapper/centos-root /
defaults
0 0
/etc/fstab:11:/dev/mapper/centos-swap swap
defaults
0 0
11:/dev/mapper/centos-swap swap
0 0
/etc/fstab:10:UUID=ae55ec6b-973b-498e-a366-f35e14b3d153 /boot
xfs
#语法错误示范
[root@localhost ~]# grep -n -v '^#' /etc/fstab | grep -v ^$
1:
9:/dev/mapper/centos-root /
10:UUID=ae55ec6b-973b-498e-a366-f35e14b3d153 /boot
#正确语法
[root@localhost ~]# grep -v '^#' /etc/fstab | grep -v ^$ -n
xfs
xfs
swap
defaults
defaults
defaults
0 0
xfs
0 0
2:/dev/mapper/centos-root /
3:UUID=ae55ec6b-973b-498e-a366-f35e14b3d153 /boot
defaults
0 0
4:/dev/mapper/centos-swap swap
xfs
swap
defaults
defaults
#显示该文件内有效配置的行
[root@localhost ~]# grep -v '^#' /etc/login.defs | grep -v ^$ -n | wc -l
评论区