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 下使用. 程序遍历当前文件夹,对其中的文件夹执行递归遍历.同时检查遍历到 ...
随机推荐
- nginx中部署前端,后端打成jar包运行
项目是前后端分离:前端用vue开发,后端用的是springboot开发 会产生跨域问题,故在前端里用了代理 1.本前端项目是用vue开发: 1.1打包:终端 vscode快捷键:crtl+~ 然后n ...
- 利用Master库spt_values表 连续数字
SELECT CONVERT ( ), dateadd(d, number, GETDATE()), ) AS every_time FROM master..spt_values n WHERE n ...
- python常用的正则表达式,持续更新<<
# -*- coding: utf-8 -*- import re str_0 = 'Aqin1012Heheheaaaaaaahehe如何da' def re_str(re_str_0,str_0) ...
- 模块一:shell 脚本基础
一.shell脚本介绍 (一)脚本案例及介绍: #!/bin/bash LOG_DIR=/var/log ROOT_UID=0 if ["$UID -ne "$ROOT_UID&q ...
- python接口自动化测试之根据excel中的期望结果是否存在于请求返回的响应值中来判断用例是否执行成功
1.首先在excel中填写好预期结果的值 这里判断接口成功的依据是预期结果值是否存在于接口的返回数据中. 一般接口的返回值都是json对象,我们需要将json对象转换为json格式的字符串 如下图,进 ...
- ORA-01789: query block has incorrect number of result columns
问题描述 ORA-01789: query block has incorrect number of result columns 原因如下 查询使用了union或者union all的时候查询上下 ...
- Python_初识面向对象
楔子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, 狗 ...
- PLSQL Developer12注册码
product code: 4vkjwhfeh3ufnqnmpr9brvcuyujrx3n3le serial Number:226959 password: xs374ca 绝对靠谱
- 状态压缩DP入门题
. /*本题为状态压缩题 题目大意 : 一个矩阵里有很多格子,每个格子有两种状态,可以放牧和不可以放牧, 可以放牧用1表示,否则用0表示,在这块牧场放牛,要求两个相邻的方 格不能同时放牛(不包括斜着的 ...
- webpack4.41.0配置四(热替换)
每次修改都要去编译,这个操作比较繁琐.所以我们希望编译过程是自动化的,而且页面的更新也是自动化的.所以需要使用这个热替换 1.首先安装webpack-dev-server:npm install w ...