前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >9.2 grep(中)

9.2 grep(中)

作者头像
运维小白
发布2018-02-06 11:43:26
8970
发布2018-02-06 11:43:26
举报
文章被收录于专栏:运维小白运维小白

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的数字
    • 这里的[] 方括号表示一个范围
代码语言:javascript
复制
[root@hf-01 grep]# grep '[0-9]' passwd        //过滤出所有带数字的行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
mysql:x:1000:1000::/home/mysql:/bin/bash
等等,只截取了一部分
[root@hf-01 grep]# 
grep命令 -v '[0-9]'
  • grep -vn '[0-9]' /etc/passwd //列出所有不带数字的行
    • -n 表示显示行号
代码语言:javascript
复制
[root@hf-01 grep]# grep -v '[0-9]' /etc/passwd
[root@hf-01 grep]# 
  • 在vim编辑文件的时候,列出行号
    • 命令 /set nu //列出每一行的行号

grep命令 -v '^#'

  • grep -vn '^#' inittab //列出文件中所有不以 #号 开头的文件
    • -v 表示取反
    • ^# 表示以#号开头的文件
代码语言:javascript
复制
[root@hf-01 grep]# cp /etc/inittab ./        //不能直接改动,因为/etc/inittab是系统开机配置问件
[root@hf-01 grep]# vim inittab
[root@hf-01 grep]# grep -nv '^#' inittab
5:fadfdfasfas
7:113465142111
12:%$#@$#*&^$%$#
grep命令两次取反 -v
  • grep -v '^#' inittab |grep -v '^1' // 第一次列出不以#号 开头的文件,第二次列出不以数字1开头的文件
    • 不能在第一次取反的时候,加-n 参数显示行号
      • 因为在第一次取反后列出行号,在第二次取反后,会把第一次取反的行号也当做文件中的内容
      • 若是在第二次处加-n参数则是可以的
代码语言:javascript
复制
[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 '^%'
fadfdfasfas
113465142111

在第一次取反 加入-n ,会把显示的行号默认成内容
[root@hf-01 grep]# grep -nv '^#' inittab|grep -nv '^1'
1:5:fadfdfasfas
2:7:113465142111
在第二次取反的时候,加-n参数,会看到显示的行号新的星号
这是因为第二次取反会把第一次取反后得出的结果,输入到第二次取反(默认是一个新文件)
[root@hf-01 grep]# grep -v '^#' inittab |grep -nv '^1'
1:fadfdfasfas
3:%$#@$#*&^$%$#
[root@hf-01 grep]# grep -v '^#' inittab|grep -nv '^%'
1:fadfdfasfas
2:113465142111

  • 取反总结:
  • 加 -n 参数 在两次(或多次)取反的时候,只能在最后一次取反加 -n 参数,因为取反的时候,会把列出的行号被默认成文件内容,所以取反的时候慎用 -n参数

grep命令 '^[^a-zA-Z]'

  • grep '[^0-9]' inittab //表示非0到9,只要不是数字,就都会匹配出来
    • 只要其中1个字符符合要求就会匹配出来
代码语言:javascript
复制
[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 取反,列出数字开头的行
代码语言:javascript
复制
[root@hf-01 grep]# grep -v '[^0-9]' inittab
113465142111
  • grep '^[^a-zA-Z]' inittab 非数字的字符开头的行
代码语言:javascript
复制
[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 非数字的行列出,然后取反显示行号
代码语言:javascript
复制
[root@hf-01 grep]# grep -nv '^[^0-9]' inittab
7:113465142111
  • 总结: 符号 ^ 表示以什么什么开头
  • 若放在方括号里面去 [^0-9] 就表示这个方括号里面的反义,取非 的意思
  • 若^符号放在[] 方括号外面 ^[^0-9] 表示以什么什么开头
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • grep用法
    • grep命令 '[0-9]'
      • grep命令 -v '[0-9]'
    • grep命令 -v '^#'
      • grep命令两次取反 -v
    • grep命令 '^[^a-zA-Z]'
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档