Linux - Shell - 在多个文件中查找关键字
1. 概述
- 在多个文件中 查找内容
2. 想干啥
目的
- 在 多个文件 中, 查找内容
准备
- 之前在 单个文件里 查找过内容
- 工具
- awk
前提
- 文件有固定格式
- 查找时有字段的要求
例子
# print $0 就一句话, 所以 不要 {} 也可以
> awk '{if($0 ~ <patter>){print $0}}' <fileName>
- grep
前提
- 这个要求没那么多
例子
> cat <fileName> | grep <pattern>
- awk
- 工具
- 之前在 单个文件里 查找过内容
例子
要求
- 查找多个文件里, 含有 1 的行
- 并知道是哪个文件里的
文件
# 得到 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
命令
> cat * | grep '1'
结果
输出
1
10
1
10
1
10
感觉不行
- 找到了 1
- 但是不知道内容分布在 哪个文件里
3. 思路2: find | xargs grep
命令
# 不理解 find 的同学, 可以用 ls 代替
# 我就不怎么理解
# -name 支持 通配符, 我的目录下只有三个文件, 所以也可以不带
> find . -type f -name "*" | xargs grep "1"
结果
输出
1:1
1:10
2:1
2:10
3:1
3:10
这次还行
- 带了文件名了, 哈哈
- 搞定
- 带了文件名了, 哈哈
4. 思路
思路
find
- find
- 找到 特定文件
- 将 文件名, 传递给 grep
- grep
- 获取多个 文件名
- 挨个文件查找内容
- 找到的话, 就显示出来
- find
cat
- cat
- 将所有文件的内容, 放入流
- 将流传给 grep
- grep
- 收到一个流
- 文件名已经丢失了
- 查找内容
- 所以只能找到内容
- 收到一个流
- cat
区别
grep 可以接受不同的东西
- 参数
- 收到参数后, 去找文件
- 流
- 收到流后, 直接在流里面找
- 所以文件名丢了
- 参数
疑问1: 为啥跟了 xargs 的 grep 就自带行号, 而 跟了 cat 的就没有?
- grep 后面跟了多个文件名, 就会自己带
- 单个文件 或者 流 的时候就不带
- grep 后面跟了多个文件名, 就会自己带
ps
Linux - Shell - 在多个文件中查找关键字的更多相关文章
- linux所有文件中查找关键字的命令
grep 192.168.1.1 * -r 在所有文件中查找192.168.1.1
- Linux系统下,在文件中查找某个字符串
在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车. Vim会跳转到第一个匹配.按下n查找下一个,按下N查找上一个. Vim查找支持正则表达式,例如/vim$匹配行尾的" ...
- Linux平台从文件中查找字符赋值于变量
以telnet方式登录Linux主机,在默认目录下用命令创建一个包含DUT wanIP的文本文件.[root] echo wanIP=88.0.100.253 > ./wanIP.txt在默认目 ...
- 在文件夹下所有文件中查找字符串(linux/windows)
在linux下可以用 grep "String" filename.txt#字符串 文件名grep -r "String" /home/#递归查找目录下所有文件 ...
- Linux 在文件中查找某字符串
命令: grep 'word' filename 在多个文件中查找: grep 'word' file1 file2 file3 更多用法参考:https://www.howtoforge.com/t ...
- Linux 在文件夹的所有文件中查找某字符
命令: grep -r -e string directory eg: 在 /home 目录下的所有文件中查找包含 test 字符串的文件. grep -r -e "test" / ...
- linux shell 字符串操作(长度,查找,替换)详解
linux shell 字符串操作(长度,查找,替换)详解 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系 ...
- linux日志中查找关键字、前几行、结尾几行,Linux的find用法示例
linux在日志中查找关键字.前几行.结尾几行,Linux的find用法示例 1.linux在日志中查找关键字.前几行.结尾几行 1.1查看日志 前 n行: 1.2查看日志 尾 n行: 1.3根据 关 ...
- 在文件夹中 的指定类型文件中 查找字符串(CodeBlocks+GCC编译,控制台程序,仅能在Windows上运行)
说明: 程序使用 io.h 中的 _findfirst 和 _findnext 函数遍历文件夹,故而程序只能在 Windows 下使用. 程序遍历当前文件夹,对其中的文件夹执行递归遍历.同时检查遍历到 ...
随机推荐
- web 项目添加 x86 的dll 引用,模块 DLL c:\WINDOWS\system32\inetsrv\aspnetcore.dll 未能加载。
最近的项目要添加一个 x86 编译的dll, 首先添加引用,编译,报错: 首先判断是 项目中不能添加 x86 的引用,所以把所有的项目都按照 x86 的方式编译一遍,同时对应IIS 的应用池,也修改为 ...
- Opencv之像素值的获取
灰度图像${\rm{M}} \times {\rm{N}}$的像素矩阵值为0~255,像素值越大越亮.${{\rm{I}}_{{\rm{i}}{\rm{j}}}}$,i表示行的位置,j 表示列的位置即 ...
- C语言回文链表
要求:请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true思路:利用快慢双指针+反转半链 ...
- AntDesign(React)学习-3 React基础
前面项目已经建起来了,但是没有React基础怎么办,从头学习,这个项目使用的是基于React16.X版本的几种技术集成,那么我们就从网上找一些相关的资料进行研究,我的习惯是用到哪学到哪. 一.先看一些 ...
- c++ 踩坑大法好 枚举
1,枚举是个啥? c++允许程序员创建自己的数据类型,枚举数据类型是程序员自定义的一种数据类型,其值是一组命名整数常量. ,wed,thu,fri,sat,sun}; //定义一个叫day的数据类型, ...
- php server整理
$_SESSION['PHP_SELF'] -- 获取当前正在执行脚本的文件名. $_SERVER['SERVER_PROTOCOL'] -- 请求页面时通信协议的名称和版本.例如,“HTTP/1.0 ...
- java 字符+操作,字符串+操作
字符额 “+” 操作 是拿字符在计算机底层对应的数值来进行计算的 ‘A’ = 65 A-Z是连续的 'a' = 97 a-z是连续的 '0' = 48 0-9是连续的 算数表达式中包含多个基本数据类型 ...
- mybatis-plus QueryWrapper自定义查询条件
mybatis-plus QueryWrapper自定义查询条件 mybatis-plus框架功能很强大,把很多功能都集成了,比如自动生成代码结构,mybatis crud封装,分页,动态数据源等等, ...
- Python入门1 —— 初识Python
一:Python介绍 1.Python是什么? Python是一门编程语言,编程语言是一门语言. 语言就是一个事物与另一个事物沟通的工具. 而编程语言则是人与计算机沟通的介质. 2.为什么要跟计算机沟 ...
- 初识Java爬虫之Jsoup,提供参考代码
本文主要分享的是关于Java爬虫技术其中一个方式 ==> Jsoup 1.Jsoup简介 推开技术大门,爬虫技术琳琅满目,而今天要分享的Jsoup是一款Java的HTML解析神器,,可直接 ...