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. 题解【AcWing883】高斯消元解线性方程组

    题面 高斯消元模板题. 这里直接讲述一下高斯消元的算法流程: 枚举每一列 \(c\): 找到第 \(c\) 列绝对值最大的一行: 将这一行换到最上面: 将该行的第一个数变成 \(1\): 将下面所有行 ...

  2. PIE-SDK For C++栅格数据的金字塔创建

    1.功能简介 金字塔可用于改善性能,可以加快栅格数据的显示速度.随着放大操作的进行,各个更精细的分辨率等级将逐渐得到绘制;但性能将保持不变:目前PIE SDK支持栅格数据的金字塔创建,下面对栅格数据格 ...

  3. ddctf,warm up,web题

    1,打开链接,发现下图,hhhh好滑稽啊,鹅鹅鹅鹅ee 2,打开源码发现source.php.添加到路径,再次访问,发现如下代码,来,让我们审计一下. 3,发现有个hint.php,进去看一看,得到一 ...

  4. Javascript数组与字符串常用api

    目录 javaScript(api学习) 数组有关的api 创建数组 数组的增删改查 indexOf(); push(),pop(),unshift(),shift() forEach() map() ...

  5. php 对接国外支付 ipay88支付

    ipay88支付 近期接了一个国外的项目,客户指定要这种支付,就搞搞呗,其实流程和思路都是差不多的,往下看 他的流程其实非常简单  下面的流程仔细看看,看懂了就会了 1 首先我们需要先获取下单所需要的 ...

  6. jsp中连接数据库及实现增删改查

    导入jdbc工具包 <%@page import="asp.engine.util.PageHelper"%><%@ page import="asp. ...

  7. MySQL启动和停止

    MySQL视为大仓库,关闭的时候有权限有身份都无法进入使用的时候要保持启用状态 方式一: 计算机游击找到“管理”打开 左侧栏目中找到“服务和应用程序”打开 打开服务 找到MySQL...,右击.... ...

  8. 记录 shell学习过程(3) if 的格式

    ] #-e 为检测目录或文件是否存在 !为取反 then mkdir -v /tmp/ echo 'ok' fi if else if [ $USER == 'root' ] then echo 'h ...

  9. Linux内核源码阅读记录一之分析存储在不同段中的函数调用过程

    在写驱动的过程中,对于入口函数与出口函数我们会用一句话来修饰他们:module_init与module_exit,那会什么经过修饰后,内核就能狗调用我们编写的入口函数与出口函数呢?下面就来分析内核调用 ...

  10. Charles 查看https请求数据 Mac/ android

    Charles_v4.0.1_Mac_破解版下载地址:https://pan.baidu.com/s/1c23VPuS 1.在Mac电脑上安装Charles的根证书 打开Charles->菜单H ...