grep用法
- grep -n 'root' /etc/passwd
- grep -nv 'nologin' /etc/passwd
- grep '[0-9]'/etc/inittab
- grep -v '[0-9]'/etc/inittab
- grep -v '^#' inittab
- grep -v '^#' /etc/inittab|grep -v '^$'
- grep '^[^a-zA-Z]' test.txt
grep命令 '[0-9]'
- grep '[0-9]' passwd 表示数字,从0到9的数字
- 这里的[] 方括号表示一个范围
[root@hf-01 grep]# grep '[0-9]' passwd //过滤出所有带数字的行root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologinmysql:x:1000:1000::/home/mysql:/bin/bash等等,只截取了一部分[root@hf-01 grep]#
grep命令 -v '[0-9]'
- grep -vn '[0-9]' /etc/passwd //列出所有不带数字的行
- -n 表示显示行号
[root@hf-01 grep]# grep -v '[0-9]' /etc/passwd[root@hf-01 grep]#
- 在vim编辑文件的时候,列出行号
- 命令 /set nu //列出每一行的行号
grep命令 -v '^#'
- grep -vn '^#' inittab //列出文件中所有不以 #号 开头的文件
- -v 表示取反
- ^# 表示以#号开头的文件
[root@hf-01 grep]# cp /etc/inittab ./ //不能直接改动,因为/etc/inittab是系统开机配置问件[root@hf-01 grep]# vim inittab[root@hf-01 grep]# grep -nv '^#' inittab5:fadfdfasfas7:11346514211112:%$#@$#*&^$%$#
grep命令两次取反 -v
- grep -v '^#' inittab |grep -v '^1' // 第一次列出不以#号 开头的文件,第二次列出不以数字1开头的文件
- 不能在第一次取反的时候,加-n 参数显示行号
- 因为在第一次取反后列出行号,在第二次取反后,会把第一次取反的行号也当做文件中的内容
- 若是在第二次处加-n参数则是可以的
- 不能在第一次取反的时候,加-n 参数显示行号
[root@hf-01 grep]# grep -v '^#' inittab|grep -v '^1'fadfdfasfas%$#@$#*&^$%$#[root@hf-01 grep]# grep -v '^#' inittab|grep -v '^f'113465142111%$#@$#*&^$%$#[root@hf-01 grep]# grep -v '^#' inittab|grep -v '^%'fadfdfasfas113465142111在第一次取反 加入-n ,会把显示的行号默认成内容[root@hf-01 grep]# grep -nv '^#' inittab|grep -nv '^1'1:5:fadfdfasfas2:7:113465142111在第二次取反的时候,加-n参数,会看到显示的行号新的星号这是因为第二次取反会把第一次取反后得出的结果,输入到第二次取反(默认是一个新文件)[root@hf-01 grep]# grep -v '^#' inittab |grep -nv '^1'1:fadfdfasfas3:%$#@$#*&^$%$#[root@hf-01 grep]# grep -v '^#' inittab|grep -nv '^%'1:fadfdfasfas2:113465142111
- 取反总结:
- 加 -n 参数 在两次(或多次)取反的时候,只能在最后一次取反加 -n 参数,因为取反的时候,会把列出的行号被默认成文件内容,所以取反的时候慎用 -n参数
grep命令 '^[^a-zA-Z]'
- grep '[^0-9]' inittab //表示非0到9,只要不是数字,就都会匹配出来
- 只要其中1个字符符合要求就会匹配出来
[root@hf-01 grep]# grep '[^0-9]' inittab# inittab is no longer used when using systemd.#fadfdfasfas# multi-user.target: analogous to runlevel 3%$#@$#*&^$%$#等等等,只截取了一部分
- grep -v '[^0-9]' inittab //列出以数字开头的行
- 分析:就是 [^0-9] 先列出非数字的开头的行,然后 -v 取反,列出数字开头的行
[root@hf-01 grep]# grep -v '[^0-9]' inittab113465142111
- grep '^[^a-zA-Z]' inittab 非数字的字符开头的行
[root@hf-01 grep]# grep '^[^0-9]' inittab# inittab is no longer used when using systemd.#fadfdfasfas# multi-user.target: analogous to runlevel 3%$#@$#*&^$%$## graphical.target: analogous to runlevel 5#等等等,只截取了一部分
- grep -nv '^[^0-9]' inittab 非数字的行列出,然后取反显示行号
[root@hf-01 grep]# grep -nv '^[^0-9]' inittab7:113465142111
- 总结: 符号 ^ 表示以什么什么开头
- 若放在方括号里面去 [^0-9] 就表示这个方括号里面的反义,取非 的意思
- 若^符号放在[] 方括号外面 ^[^0-9] 表示以什么什么开头