• linux中的grep命令


    定义:grep用来搜索文件中符合条件的字符串,并返回包含该字符串的所有行

    语法:

    grep [options] pattern [files]

    一些常见选项的解释

    -c : 计算包含样式的行数
    -h : 显示包含该样式的行,但是不显示该行所属的文件的名字
    -i : 忽略字符大小写的差别
    -l : 只展示文件名字
    -n : 展示包含该样式的行以及行号
    -v : 显示所有不包含样式的行
    -e exp : 指定字符串作为查找文件内容的范本样式。
    -f file : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每一行的规则样式。 
    -E : 将样式作为扩展的正则表达式使用
    -w : 只显示全字符合的行
    -o : 只显示包含pattern的那一行中匹配成功的部分,且每部分逐行显示

    grep应用举例

    1) 如何在linux的文件中查找一个字符串. 比如我想在/etc/passwd中查找yiran这个用户,输入

    grep yiran /etc/passwd

    输出

    yiran:x:1000:1000:Yiran,,,:/home/yiran:/bin/bash

    如果想让grep忽略pattern的大小写,可以使用-i选项

    grep -i yiran /etc/passwd

    事实上最后一个命令和如下命令的作用是一样的

    cat /etc/passwd | grep  -i yiran

    同理 cat /etc/passwd | grep yiran 和 grep yiran /etc/passwd 结果也是一样的

    2) 如何递归的使用grep, 比如我想在facenet这个文件夹下中查找所有的'.jpg'文件,但是facenet这个文件夹又包含很多个文件夹,这时候可以用-r递归的查询facenet中的每个文件夹

    grep -r '.jpg' facenet

    输出

    显示的结果中,左边的是找到的行所在的文件名,如果我们不希望出现这些文件名可以使用-h选项

    grep -h -r '.jpg' facenet

    或者

    grep -hr '.jpg' facenet

    3)如何使用grep只搜索完整字符串?换句话说当我们想查找ha这个词,grep命令可能会返回haha, yaha, hahaha等等,但我只想要ha这个词.这时我们可以用-w这个命令

    $ grep -w "ha" file

    4)如何用grep在文件中搜索两个不同的词?比如我想在一个文件中查找foo或者boo这个词,可以使用'-E' 加上正则表达式中的分支结构'|':

    $ grep -E 'word1|word2' /path/to/file

    grep -E和egrep命令实际上是一样的,上面的命令和如下命令等同,会显示所有含有foo的行以及所有含有boo的行.

    $ egrep 'word1|word2' /path/to/file

    5)如何使用grep实现多条件查询?比如我想查询文件中既含有foo也含有boo这两个词的行,可以使用如下命令,它会返回既包含foo也包含boo的行

    grep  'word1' /path/to/file | grep 'word2'

    6)如何列出含有pattern的文件的文件名.使用-l命令列出所有含有'main'的c文件

    $ grep -l 'main' *.c

    7)查找以某一字符串开头的行,比如我想查找以word1开头的所有行,可以用'^'正则表达式来完成此操作

    $ grep "^word1" /path/to/file

    同理,想查找以某一字符串结尾的行可以用'$'符号

    $ grep "word2$" /path/to/file

    8) 可以使用-f命令从文本中获取pattern.每行一个pattern

    $cat pattern.txt
    
    happy
    enjoy
    sweet
    $grep –f pattern.txt  happiness.txt

    使用管道和grep命令

    管道命令 'cmd1|cmd2' 会将左边命令的输出流作为右边命令的输入流,命令之间存在很强的依赖关系,并且管道命令只能处理正确的输出数据流。

    grep经常使用管道的数据进行查找的命令,比如说刚刚用的  cat /etc/passwd | grep -i yiran . 其中grep使用cat的标准输出作为标准输入.

    查找正在运行的python进程

    ps -aux | grep pyhton

    其中ps -aux 会返回目前所有的正在内存当中的程序,grep pyhton会从这些程序中查找pyhton程序.

    显示cpu模型的名字

     cat /proc/cpuinfo |grep -i 'Model'

    输出结果

    model        : 142
    model name    : Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
    model        : 142
    model name    : Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
    model        : 142
    model name    : Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
    model        : 142
    model name    : Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz

    reference  How To Use grep Command In Linux / UNIX

  • 相关阅读:
    react 高阶组件之小学版
    react diff 极简版
    react 16更新
    react 组件的生命周期 超简版
    JS继承(简单理解版)
    Vue Virtual Dom 和 Diff原理(面试必备) 极简版
    Vue数据双向绑定(面试必备) 极简版
    Vue生命周期的执行过程(面试必备) 极简版
    多个Portal for ArcGIS 间的协作实操
    Portal的安全代理(反向代理出口)配置架构
  • 原文地址:https://www.cnblogs.com/laozhanghahaha/p/12544707.html
Copyright © 2020-2023  润新知