1. 概述

  1. 在多个文件中 查找内容

2. 想干啥

  1. 目的

    1. 在 多个文件 中, 查找内容
  2. 准备

    1. 之前在 单个文件里 查找过内容

      1. 工具

        1. awk

          1. 前提

            1. 文件有固定格式
            2. 查找时有字段的要求
          2. 例子

            # print $0 就一句话, 所以 不要 {} 也可以
            > awk '{if($0 ~ <patter>){print $0}}' <fileName>
        2. grep
          1. 前提

            1. 这个要求没那么多
          2. 例子

            > cat <fileName> | grep <pattern>
  3. 例子

    1. 要求

      1. 查找多个文件里, 含有 1 的行
      2. 并知道是哪个文件里的
    2. 文件

      # 得到 1 2 3 三个文件, 每个文件的内容, 是 1 到 10
      > seq 1 10 > 1
      > seq 1 10 > 2
      > seq 1 10 > 3
      # 可以用 循环写, 也不难对吧
      > for i in {1..3};do seq 1 10 > ${i};done

2. 思路1: cat | grep

  1. 命令

    > cat * | grep '1'
  2. 结果

    1. 输出

      1
      10
      1
      10
      1
      10
    2. 感觉不行

      1. 找到了 1
      2. 但是不知道内容分布在 哪个文件里

3. 思路2: find | xargs grep

  1. 命令

    # 不理解 find 的同学, 可以用 ls 代替
    # 我就不怎么理解
    # -name 支持 通配符, 我的目录下只有三个文件, 所以也可以不带
    > find . -type f -name "*" | xargs grep "1"
  2. 结果

    1. 输出

      1:1
      1:10
      2:1
      2:10
      3:1
      3:10
    2. 这次还行

      1. 带了文件名了, 哈哈

        1. 搞定

4. 思路

  1. 思路

    1. find

      1. find

        1. 找到 特定文件
        2. 将 文件名, 传递给 grep
      2. grep
        1. 获取多个 文件名
        2. 挨个文件查找内容
        3. 找到的话, 就显示出来
    2. cat

      1. cat

        1. 将所有文件的内容, 放入流
        2. 将流传给 grep
      2. grep
        1. 收到一个流

          1. 文件名已经丢失了
        2. 查找内容
          1. 所以只能找到内容
  2. 区别

    1. grep 可以接受不同的东西

      1. 参数

        1. 收到参数后, 去找文件
        1. 收到流后, 直接在流里面找
        2. 所以文件名丢了
    2. 疑问1: 为啥跟了 xargs 的 grep 就自带行号, 而 跟了 cat 的就没有?

      1. grep 后面跟了多个文件名, 就会自己带

        1. 单个文件 或者 流 的时候就不带

ps

  1. ref

    1. Linux上批量查找文件里面带的关键字(grep 关键字的用法)

Linux - Shell - 在多个文件中查找关键字的更多相关文章

  1. linux所有文件中查找关键字的命令

     grep 192.168.1.1 * -r    在所有文件中查找192.168.1.1

  2. Linux系统下,在文件中查找某个字符串

    在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车. Vim会跳转到第一个匹配.按下n查找下一个,按下N查找上一个. Vim查找支持正则表达式,例如/vim$匹配行尾的" ...

  3. Linux平台从文件中查找字符赋值于变量

    以telnet方式登录Linux主机,在默认目录下用命令创建一个包含DUT wanIP的文本文件.[root] echo wanIP=88.0.100.253 > ./wanIP.txt在默认目 ...

  4. 在文件夹下所有文件中查找字符串(linux/windows)

    在linux下可以用 grep "String" filename.txt#字符串 文件名grep -r "String" /home/#递归查找目录下所有文件 ...

  5. Linux 在文件中查找某字符串

    命令: grep 'word' filename 在多个文件中查找: grep 'word' file1 file2 file3 更多用法参考:https://www.howtoforge.com/t ...

  6. Linux 在文件夹的所有文件中查找某字符

    命令: grep -r -e string directory eg: 在 /home 目录下的所有文件中查找包含 test 字符串的文件. grep -r -e "test" / ...

  7. linux shell 字符串操作(长度,查找,替换)详解

    linux shell 字符串操作(长度,查找,替换)详解 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系 ...

  8. linux日志中查找关键字、前几行、结尾几行,Linux的find用法示例

    linux在日志中查找关键字.前几行.结尾几行,Linux的find用法示例 1.linux在日志中查找关键字.前几行.结尾几行 1.1查看日志 前 n行: 1.2查看日志 尾 n行: 1.3根据 关 ...

  9. 在文件夹中 的指定类型文件中 查找字符串(CodeBlocks+GCC编译,控制台程序,仅能在Windows上运行)

    说明: 程序使用 io.h 中的 _findfirst 和 _findnext 函数遍历文件夹,故而程序只能在 Windows 下使用. 程序遍历当前文件夹,对其中的文件夹执行递归遍历.同时检查遍历到 ...

随机推荐

  1. web 项目添加 x86 的dll 引用,模块 DLL c:\WINDOWS\system32\inetsrv\aspnetcore.dll 未能加载。

    最近的项目要添加一个 x86 编译的dll, 首先添加引用,编译,报错: 首先判断是 项目中不能添加 x86 的引用,所以把所有的项目都按照 x86 的方式编译一遍,同时对应IIS 的应用池,也修改为 ...

  2. Opencv之像素值的获取

    灰度图像${\rm{M}} \times {\rm{N}}$的像素矩阵值为0~255,像素值越大越亮.${{\rm{I}}_{{\rm{i}}{\rm{j}}}}$,i表示行的位置,j 表示列的位置即 ...

  3. C语言回文链表

    要求:请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true思路:利用快慢双指针+反转半链 ...

  4. AntDesign(React)学习-3 React基础

    前面项目已经建起来了,但是没有React基础怎么办,从头学习,这个项目使用的是基于React16.X版本的几种技术集成,那么我们就从网上找一些相关的资料进行研究,我的习惯是用到哪学到哪. 一.先看一些 ...

  5. c++ 踩坑大法好 枚举

    1,枚举是个啥? c++允许程序员创建自己的数据类型,枚举数据类型是程序员自定义的一种数据类型,其值是一组命名整数常量. ,wed,thu,fri,sat,sun}; //定义一个叫day的数据类型, ...

  6. php server整理

    $_SESSION['PHP_SELF'] -- 获取当前正在执行脚本的文件名. $_SERVER['SERVER_PROTOCOL'] -- 请求页面时通信协议的名称和版本.例如,“HTTP/1.0 ...

  7. java 字符+操作,字符串+操作

    字符额 “+” 操作 是拿字符在计算机底层对应的数值来进行计算的 ‘A’ = 65 A-Z是连续的 'a' = 97 a-z是连续的 '0' = 48 0-9是连续的 算数表达式中包含多个基本数据类型 ...

  8. mybatis-plus QueryWrapper自定义查询条件

    mybatis-plus QueryWrapper自定义查询条件 mybatis-plus框架功能很强大,把很多功能都集成了,比如自动生成代码结构,mybatis crud封装,分页,动态数据源等等, ...

  9. Python入门1 —— 初识Python

    一:Python介绍 1.Python是什么? Python是一门编程语言,编程语言是一门语言. 语言就是一个事物与另一个事物沟通的工具. 而编程语言则是人与计算机沟通的介质. 2.为什么要跟计算机沟 ...

  10. 初识Java爬虫之Jsoup,提供参考代码

    本文主要分享的是关于Java爬虫技术其中一个方式   ==>  Jsoup 1.Jsoup简介 推开技术大门,爬虫技术琳琅满目,而今天要分享的Jsoup是一款Java的HTML解析神器,,可直接 ...