linux 输出正则匹配到·的内容

关于linux 的问题
我用grep 过滤出一些内容但是,他总是输出整行,有没有什么方法,可以直接只输出我正则匹配到的内容,其他内容不要

如下只输出红色部分,其他丢掉,不要太过复杂的awk {print $} 这种,想要快速直接输出匹配到的内容

img

使用 -o 选项就只输出匹配到的内容:grep -o "xxx"
如果是正则表达式匹配,可以和E写在一起:grep -oE "xxreg"

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/235522
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Linux基础命令 & find查找命令 & 正则表达式与grep使用 & awk相关的命令
  • 除此之外, 这篇博客: Linux基础知识及应用编程中的 4.awk grep具体应用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • find 和 grep 命令异同
    find 命令:主要用于查找文件
    grep 命令:主要用来在某个文件中查找具体文字内容 ,

    1. 查找所有".h"文件
    find /PATH -name "*.h"
    
    # 查找所有".h"文件中的含有"helloworld"字符串的文件
    find /PATH -name "*.h" -exec grep -in "helloworld" {} \;
    find /PATH -name "*.h" | xargs grep -in "helloworld"
    #查找所有".h"和".c"文件中的含有"helloworld"字符串的文件
    find /PATH /( -name "*.h" -or -name "*.c" /) -exec grep -in "helloworld" {} \;
    

    注:/PATH为查找路径,默认为当前路径。带-exec参数时必须以;结尾,否则会提示“find: 遗漏“-exec”的参数”。

    Linux 三剑客 grep / sed / awk
    grep: 强大的文本’搜索’工具

    grep [OPTIONS] PATTERN [FILE...]
    grep   -n   'word'  file_name
    

    sed:实现数据的替换,删除,增加,选取等(以行为单位进行处理)

    sed [option] 'script' inputfile
    #删除file_name文件的2到4行
    sed    '2,4d'    file_name
    

    awk: 以字段为单位进行处理(其实就是把一行的数据分割,然后进行处理)

    awk [options] 'program' file…
    #把file_name 文件中的前五行的第一列,第二列的数据列出来 (以[tab]或空格键分隔)
     awk      'NR<6{print   $1  "\t"  $2 }'     file_name  
    

    详细的操作Linux 三剑客 grep/sed/awk