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 下使用. 程序遍历当前文件夹,对其中的文件夹执行递归遍历.同时检查遍历到 ...
随机推荐
- Python TCP与UDP的区别
TCP:英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的.可靠的.基于字节流的传输层通信协议. TCP通信需要经过创建连接.数据传送.终止连接 ...
- Python 类方法、实例方法、静态方法的使用与及实例
类方法 使用装饰器@classmethod 第一个参数必须是当前类对象,该参数名一般约定为“cls” (可修改但不建议)通过他来传递类的属性和方法(不能传实例的属性和方法) 调用:实例对象和类对象多可 ...
- linux - mysql 异常:MySQL Daemon failed to start.
报错内容 MySQL Daemon failed to start. 如果直接输入 mysql -root -p 登陆会出现 [mysql]ERROR 2002 (HY000): Can't conn ...
- pandas处理csv,分组统计
需求: /tmp/demo/data下有10个csv文件,按col0和col1分组分别统计col2和col3总和并计算col2和col3的商 # encoding:utf-8 import panda ...
- View -->Controller传值的几种方法
1.参数名称必须和表单的name是一致的. //参数的名称需要和表单的字段名称一致,这样系统便会直接赋值. public ActionResult GetUserInfo(string usernam ...
- 08 部署nginx web服务器(转发fastDFS请求)
先准备两个文件: fastdfs-nginx-module-master.tar.gz:fastDFS nginx安装包 nginx-1.17.3.tar.gz:nginx安装包 注:这两个包文件要匹 ...
- BBR在实时音视频领域的应用
小议BBR算法 BBR全称Bottleneck Bandwidth and RTT,它是谷歌在2016年推出的全新的网络拥塞控制算法.要说明BBR算法,就不能不提TCP拥塞算法. 传统的TCP拥塞控制 ...
- 题解【AcWing274】移动服务
题面 非常好的优化 \(\text{DP}\) 状态表示的题目. 首先可以设 \(dp_{i,x,y,z}\) 表示已经做完了前 \(i\) 个请求,现在的 \(3\) 名服务员分别在 \(x\) . ...
- 题解【洛谷P3574】[POI2014]FAR-FarmCraft
题面 简化版题意: 有一棵 \(n\) 个点的树,有边权. 你初始在 \(1\) 号节点,你需要走遍整棵树为 \(2 \sim n\) 号点的居民分发电脑,但你的汽油只够经过每条边恰好两次. 一个居民 ...
- java基础异常处理
异常的定义:中断了正常指令流的事件. try..catch..finally结构: class Test{ public static void main(String[] args){ System ...