【Linux】Linux三剑客(grep,sed,awk)

一、正则

  • 通配:大部分普通命令都支持通配符,比如ls、find等。
  • 正则:linux下普通命令无法使用正则表达式,只有三剑客可以使用。

基本正则表达式:BRE (basic regular expression)

符号表含义
^锁定行的开头,例:^root
$锁定行的结尾,例:txt$
*匹配前一个字符0次或者多次,例:te*可以匹配到t,te,tee等
.匹配任意一个且只有一个字符,不能匹配空行
\转义字符
[xyz]匹配方括号中的任意一个字符,也可以写作[x-z]
[^xyz]匹配除方括号中字符的任意一个字符
组合符含义
^$表示空行
.*匹配所有内容
^.*匹配任意多的字符开头的内容
.*$匹配任意多个字符结尾的内容

扩展正则表达式:ERE (extended regular expression) 使用扩展正则表达式时需携带相应选项[ -E | -r ]

符号表含义
+匹配前一个字符1次或者多次,例:te+可以匹配到te,tee等,但不能匹配到t
?匹配前一个字符0次或者1次,例:te+可以匹配到t,te
|表示或者,可以同时过滤多个字符串,例:x|y可以匹配x或y
()分组过滤,被括起来的表示一个集体,例:g(la|oo)d可以匹配到glad或者good
a{n,m}匹配字符a,最少n次,最多m次
a{n,}匹配字符a,最少n次
a{,m}匹配字符a,最多m次
a{n}匹配字符a一共n次

二、grep

1、概念

文本过滤工具,适合用于筛选。

2、指令格式

grep [选项] 模式 文件名

参数选项

参数选项解释说明
-v排除匹配结果
-n显示匹配行与行号
-i不区分大小写
-c只统计匹配的行数
-E支持使用扩展正则表达式
-o只输出匹配的内容
-w只匹配过滤的单词
–color=auto为grep过滤结果添加颜色

3、实例

在这里插入图片描述
在这里插入图片描述

三、sed

1、概念

流编辑器,文本编辑工具,适合用于行操作。
在这里插入图片描述

2、指令格式

sed [选项] [脚本命令] [文件名]

参数选项

参数选项解释说明
-n取消默认sed的输出
-i直接将修改结果写入文件
-e多次编辑
-r支持使用扩展正则表达式
-f使用脚本文件

内置命令

内置命令解释说明
a\append,追加
ddelete,删除
i\insert,插入
pprint,打印
s/正则/替换内容/g匹配正则内容然后替换,g代表全局匹配否则只匹配每行第一个

匹配范围

范围解释说明
空地址全文处理
单地址指定文件某一行
/pattern/被模式匹配到的每一行,可以使用正则表达式
范围区间n,m匹配到n-m行,n+d匹配到从n往下的d行
步长a~b匹配到从第a行开始以b为步长的行

3、实例

sed指令执行结束后变更的仅仅是模式空间中的文本内容,实际文件中并不改变,要将变化反映到文件中需要使用指定选项 -i :

在这里插入图片描述

使用-n可以显示对应行号:

在这里插入图片描述

sed匹配范围可以是指定行,也可以是某个筛选条件:

在这里插入图片描述

可以对同一个文件同时执行多条命令:

在这里插入图片描述

指令过于复杂时,可以将sed要执行的指令写入文件中,使用 -f 调用命令文件:

在这里插入图片描述

四、awk

1、概念

文本报告生成器,适合用于列操作,awk会将每一行按照指定分隔符进行分段,可以对指定字段进行操作。

在这里插入图片描述

2、指令格式

awk [选项] '脚本命令' 文件名

脚本命令:[模式][{命令}]

  • 模式为空则作用范围为全局
  • 命令为空则打印符合模式的行

参数选项

参数选项解释说明
-F指定分隔符
-f从脚本中读取awk命令
-v定义或修改一个awk内部的变量

内置变量

内置变量解释说明
$n指定分隔符后,当前行的第n个字段
$0完整的输入记录
FS输入字段分隔符,默认是空格
OFS输出字段分隔符,默认是空格
RS输入换行符
ORS输出换行符
NF分隔后当前行一共有多少个字段,$NF可以表示分隔后的最后一列
NR当前行数
FNR各文件分别计数的行号
FILENAME当前文件名
ARGC命令行参数个数
ARGV数组,保存命令行各个参数

特殊关键字

  • BEGIN:awk在开始处理文本之前要进行的动作。
  • END:awk在处理完所有文本之后要进行的动作。

3、实例

查看文件内容

在这里插入图片描述

格式化输出:

在这里插入图片描述

一些特殊文件会使用自定义的特殊分隔符,awk可以自定义分隔符进行识别:

在这里插入图片描述

BEGIN&END:

在这里插入图片描述

使用正则表达式时需要将正则表达式放入反斜杠中:

在这里插入图片描述

指令过于复杂时,可以将awk要执行的指令写入文件中,使用 -f 调用命令文件:

  • 目标文件:
    在这里插入图片描述
  • 指令脚本:
    在这里插入图片描述
  • 执行结果:
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux三剑客指的是 awksedgrepawk 是一种用来处理文本文件的工具,它可以根据指定的模式进行自动分割并进行数据处理。 sed 是一种流编辑器,它可以对文本文件进行替换、删除和插入操作。 grep 是一种文本搜索工具,它可以在文本文件中搜索指定的字符串。 ### 回答2: Linux三剑客,分别是awksedgrep,它们是Linux系统中非常重要的命令行工具,它们通常被称为文本处理工具。这些工具通常被用于筛选、搜索和处理文本文件。 grep是一种常见的文本搜索工具,可以在文件和文件夹中搜索指定的字符串或正则表达式grep可以搜索多个文件并返回匹配行的输出。它是处理日志文件或查找匹配模式的最佳工具之一。 sed是一种流编辑器,可以按照行处理文本文件。它可以通过替换、删除和插入操作来修改文件内容。在大型文件中查找并替换模式是sed的主要作用。该工具通常在文本文件中提取有用信息是常用。 awk是一种强大的文本操作工具,可以分析大型文本文件并对其进行处理。该工具可以遍历行和列,并提供强大的文本处理工具,如计算、过滤和转换数据。awk的处理速度非常快,适用于处理大型数据文件。 Linux三剑客awk是最强大的工具,它可以执行复杂的文本数据操作和转换,可大大简化开发和管理过程。sed主要用于简单的文本数据过滤和替换,而grep主要用于搜索文件和定位特定行。 总之,Linux三剑客在文本数据处理方面具有不可替代的重要作用。对于Linux操作系统的开发人员和管理员来说,熟练使用这些工具可以提高他们的工作效率,使他们更容易管理和操作文本文件。 ### 回答3: Linux三剑客awk sed grep是我们在日常工作中经常使用的三个命令。它们都属于文本处理工具,可以用于查找、处理、分析文本文件等。 首先,grep是最常用的文本搜索工具。grep可以用来快速查找文件中指定的字符串或正则表达式,并将包含该字符串或正则表达式的行打印出来。常用的命令有grep、egrep和fgrep。比如,我们可以使用grep命令来查找一个文件中包含指定关键字的行,可以使用egrep来支持正则表达式搜索,使用fgrep来进行快速搜索,不支持正则表达式。 其次,sed是一种流编辑器,主要用于对文本文件进行替换、删除、添加、插入等操作。sed命令可以通过管道(|)将多个命令组合起来,从而进行复杂的文本操作。sed可以快速完成对文本文件的修改操作,比如替换文件中的某些内容、删除特定的行、在文件中插入新的文本等。sed的命令形式是“command", 比如"s/old/new/g",表示将old替换成new。 最后,awk是一种强大的文本处理工具,主要用于在文本文件中查找、处理以及格式化特定的字段。和grepsed不同的是,awk更加灵活,可以在处理过程中做到数据过滤和加工,对于大数据的处理特别有用。awk命令的常用语法是"pattern {action}"。其中,pattern代表要匹配的模式,而action代表模式匹配时需要执行的动作,我们可以在其中添加处理语句来对文件进行各种处理操作,比如计算、统计、格式化等。 综上所述,Linux三剑客awk sed grep是我们在文本处理工作中不可或缺的三个工具,不同的工具可以用于处理不同的文本操作,也可以用于搭配使用,以完成更加复杂的文本处理工作。对于需要经常处理文本的人员来说,掌握这些工具是非常必要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值