zoukankan      html  css  js  c++  java
  • Linux

    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 关键字的用法)
    尽量尝试解释清楚; 自己校对能力有限, 如果有错误欢迎指出
  • 相关阅读:
    史上最全web.xml配置文件元素详解
    SpringMVC后台接收list类型的数据的实现方式
    史上最全的maven的pom.xml文件详解
    阿里菜鸟同学迟到的2018年个人总结(文末彩蛋)
    可以落地的DDD到底长什么样?
    欠的债,这一次都还给你们
    主流分布式架构的风流韵事...
    分布式架构的前世今生...
    分布式架构之美~
    征服诱人的Vagrant!
  • 原文地址:https://www.cnblogs.com/xy14/p/11735343.html
Copyright © 2011-2022 走看看