博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
9.2 grep(中)
阅读量:6242 次
发布时间:2019-06-22

本文共 2692 字,大约阅读时间需要 8 分钟。

hot3.png

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参数则是可以的
[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] 表示以什么什么开头

转载于:https://my.oschina.net/u/3707314/blog/1575438

你可能感兴趣的文章
python爬虫——绕开杂乱无章的代码和堵住请求的302异常(2)
查看>>
static易错点
查看>>
js获取当前日期(年月日格式)
查看>>
LeetCode【217. Contains Duplicate】
查看>>
EBook
查看>>
单词加密
查看>>
【转】关于使用GUID和Identity做主键的一些思考
查看>>
oracle入坑日记<六>自增列创建和清除(含序列和触发器的基础用法)
查看>>
JS框架设计之主流框架的引入机制DomeReady一种子模块
查看>>
js失效的原因及解决方式
查看>>
heap堆内存不足
查看>>
scp命令
查看>>
02-Java中的对象和类
查看>>
if 判断语句
查看>>
tornado+websocket+mongodb实现在线视屏文字聊天
查看>>
如何使用VSTS做压力测试
查看>>
生成树计数算法
查看>>
VS10_慢_优化
查看>>
二维数组赋值
查看>>
java语言之面向对象的概念和和类与对象的基础知识
查看>>