Linux三剑客(grep、sed、awk)

本文介绍了Linux中grep、sed和awk三个强大的命令行工具。grep用于搜索文件中的特定模式,支持忽略大小写、只显示匹配行数等功能;sed则能对文本进行替换、删除等操作,如按行范围筛选日志;awk则擅长数据分析,通过模式匹配和处理函数对文本进行精确操作。通过这些工具,可以高效地处理和分析大量文本数据。
摘要由CSDN通过智能技术生成

grep

选项说明
-c只打印匹配的文本的行数,不显示匹配的内容
-i匹配时忽略字符的大小写
-h当搜索多个文件时,不显示匹配文件名前缀
-l只列出含有匹配的文本行的文件的文件名,而不显示具体的匹配的内容
-n列出所有的匹配的文本行,并显示行号
-s不显示关于不存在或者无法读取文件的错误信息
-v只显示不匹配的文本行
-w匹配整个单词
-x匹配整个文本行
-r递归搜索,不仅搜索当前目录,还要搜索其各级子目录
-q禁止输出任何匹配结果,而是以退出状态码的形式表示搜索是否成功,其中0表示找到了匹配的文本行
-b打印匹配的文本行到文件头的偏移量,以字节为单位
-E支持扩展正则表达式
-P支持Perl正则表达式
-F不支持正则表达式,将模式按字面意义匹配

查找不存在某个关键词的文件

搜索trc文件中不存在error关键词的文件

grep -L error *.trc

通过xargs将文件复制到指定目录

grep -L error *.trc|xargs -i cp {} /20220624/

sed

在这里插入图片描述
sed命令的基本语法如下:
sed [options] [script] [inputfile…]

在上面的语法中,options代表sed命令的选项,常用的选项如下所列。

选项说明
-n取消默认输出。
-e允许执行多个脚本。
-f从脚本文件中读取命令。
-i直接修改原始文件。
-l指定行的长度。
-r在脚本中使用扩展正则表达式。
-s默认情况下,sed将把命令行指定的多个文件名作为一个长的连续的输入流。
而GNU sed则允许把它们当做单独的文件,这样的话,正则表达式不进行跨文件匹配。
-u最低限度的缓存输入与输出。

示例

截取两个关键字符之间的数据,下面截取的是clickhouse中4月19日凌晨3点到4点的日志

sed -n '/2022.04.19 03:00/,/2022.04.19 05:00/p' clickhouse-server.log > clickhouse-server.log.20220419.log

awk

  • awk入门:主要介绍awk的功能、工作方式、基本语法,以及工作流程等。
  • awk的模式匹配:主要介绍awk命令中的匹配模式,包括BEGIN模式、END模式、关系表达式、正则表达式,以及混合模式等。
  • 变量:主要介绍awk程序中的变量的定义方法、常用的系统变量,以及使用系统变量获取记录和字段的值。
  • 运算符和表达式:主要介绍各种运算符,包括算术运算符、赋值运算符、条件运算符、逻辑运算符,以及关系运算符等。
  • 函数:主要介绍awk内置的常用字符串函数和算术函数。
  • 数组:主要介绍数组的定义和引用方法,以及数组的遍历等。
  • 流程控制:主要介绍awk中的if、while、do…while、break、continue、next,以及exit等流程控制语句的使用方法。
  • awk程序的格式化输出:主要介绍awk程序中的输出语句,包括print及printf等。
  • awk的程序与Shell的交互:主要介绍通过管道和system函数实现awk程序与Shell的交互。

awk命令的匹配模式非常灵活,可以是以下任意一种。

  • 正则表达式:需要使用斜线将正则表达式包围起来。
  • 关系表达式:例如x>34,判断变量x与34是否存在大于的关系。
  • 模式1,模式2:指定一个行的范围。该语法不能包括BEGIN和END模式。
  • BEGIN:让用户指定在第1行文本被处理之前所发生的操作,通常可在这里设置全局变量。
  • END:让用户在最后1行文本被读取之后发生的操作。

awk命令的操作由一个或者多个命令、函数或者表达式组成,它们之间由换行符或者分号隔开,并且位于大括号内。通常情况下,有以下4种操作:

  • 变量或者数组赋值。
  • 输出命令,例如printf或者print。
  • 内置函数。
  • 流程控制语句,例如if、while或者for等。

awk的工作流程
对于初学者来说,搞清楚awk的工作流程非常重要。只有在掌握了awk的工作流程之后,才有可能用awk来处理数据。在awk处理数据时,它会反复执行以下4个步骤:

  1. 自动从指定的数据文件中读取行文本。
  2. 自动更新awk的内置系统变量的值,例如列数变量NF、行数变量NR、行变量$0,以及各个列变量$1、$2等。
  3. 依次执行程序中所有的匹配模式及其操作。
  4. 当执行完程序中所有的匹配模式及其操作之后,如果数据文件中仍然有末读取的数据行,则返回到第1步,重复执行1~4的操作。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值