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 下使用. 程序遍历当前文件夹,对其中的文件夹执行递归遍历.同时检查遍历到 ...
随机推荐
- 题解【AcWing883】高斯消元解线性方程组
题面 高斯消元模板题. 这里直接讲述一下高斯消元的算法流程: 枚举每一列 \(c\): 找到第 \(c\) 列绝对值最大的一行: 将这一行换到最上面: 将该行的第一个数变成 \(1\): 将下面所有行 ...
- PIE-SDK For C++栅格数据的金字塔创建
1.功能简介 金字塔可用于改善性能,可以加快栅格数据的显示速度.随着放大操作的进行,各个更精细的分辨率等级将逐渐得到绘制;但性能将保持不变:目前PIE SDK支持栅格数据的金字塔创建,下面对栅格数据格 ...
- ddctf,warm up,web题
1,打开链接,发现下图,hhhh好滑稽啊,鹅鹅鹅鹅ee 2,打开源码发现source.php.添加到路径,再次访问,发现如下代码,来,让我们审计一下. 3,发现有个hint.php,进去看一看,得到一 ...
- Javascript数组与字符串常用api
目录 javaScript(api学习) 数组有关的api 创建数组 数组的增删改查 indexOf(); push(),pop(),unshift(),shift() forEach() map() ...
- php 对接国外支付 ipay88支付
ipay88支付 近期接了一个国外的项目,客户指定要这种支付,就搞搞呗,其实流程和思路都是差不多的,往下看 他的流程其实非常简单 下面的流程仔细看看,看懂了就会了 1 首先我们需要先获取下单所需要的 ...
- jsp中连接数据库及实现增删改查
导入jdbc工具包 <%@page import="asp.engine.util.PageHelper"%><%@ page import="asp. ...
- MySQL启动和停止
MySQL视为大仓库,关闭的时候有权限有身份都无法进入使用的时候要保持启用状态 方式一: 计算机游击找到“管理”打开 左侧栏目中找到“服务和应用程序”打开 打开服务 找到MySQL...,右击.... ...
- 记录 shell学习过程(3) if 的格式
] #-e 为检测目录或文件是否存在 !为取反 then mkdir -v /tmp/ echo 'ok' fi if else if [ $USER == 'root' ] then echo 'h ...
- Linux内核源码阅读记录一之分析存储在不同段中的函数调用过程
在写驱动的过程中,对于入口函数与出口函数我们会用一句话来修饰他们:module_init与module_exit,那会什么经过修饰后,内核就能狗调用我们编写的入口函数与出口函数呢?下面就来分析内核调用 ...
- Charles 查看https请求数据 Mac/ android
Charles_v4.0.1_Mac_破解版下载地址:https://pan.baidu.com/s/1c23VPuS 1.在Mac电脑上安装Charles的根证书 打开Charles->菜单H ...