Linux文本三剑客

awk、grep、sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂。grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。文本三剑客均支持正则表达式因此在学习文本三剑客之前我们需要学一下正则表达式。

正则表达式

1.正则表达式主要分为两类:

  • 基本的正则表达式
  • 扩展的正则表达式

下面我们来看一下基本的正则表达式来感受一下正则表达式的强大

  • $ :用来匹配模式的最右则如"ksy$"是用来匹配
  • ^ :用来匹配模式的最左侧如 "^ksy"是用来匹配以单词ksy开头的行。
  • $^:表示匹配空格行
  • *:用来匹配前一个字符0次或者1次以上
  • .*:组合符用来匹配任意长度的字符串
  • ^.*:用来匹配任意多个字符开头的内容
  • .*$:用来匹配任意多个字符结尾的内容
  • [abc]:用来匹配集合里面任意一个字符
  • [^abc]:表示用来匹配除了集合当中的任意字符
  • . :用来匹配单个任意字符并且有且只能匹配一个字符不能匹配空行
  • \:用来转义让有特殊含义的字符现出原型比如说.就代表小数点

以上就是常用的正则表达式,一些复杂的正则表达式在这里就不列出下面我们来看一下一些扩展的文本三剑客

在这里插入图片描述

注意:扩展的正则表达式grep如果要使用必须使用grep -E才能使用

文本三剑客Grep

下面让我们来看一下文本三剑客当中的grep

1.grep的作用主要用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查,打印匹配到的行。
2.模式:由正则表达式的元字符及文本字符所编写出的过滤条件.

语法形式:grep [options] [pattern] file。
grep命令里的匹配模式就是你想要找的东西,可以是普通的文字符号,也可以是正则表达式。其主要选项主要有

在这里插入图片描述

下面我们来演示几个grep的案例:
首先我们先打开一个文件然后我们往里面写入一点内容:

在这里插入图片描述

现在我们想将这个文件里面的内容显示出来但是我们不想看到看到空行,此时我们可以使用上面的组合符 ^$代表空格在使用grep的-v选项即可

在这里插入图片描述

如果我们此时想要以My单词开头的行此时如何获取了?

在这里插入图片描述

我们在文本的最后加入一行注释,让后我们想输出文本当中除了注释和空行的
内容如图所示:

在这里插入图片描述

我们发现这个是以"#号开头此时我们可以使用grep -v 将其过滤掉然后将交给grep在次过滤

在这里插入图片描述

其他的选项和正则各位老铁可以下列自行尝试

文本三剑客Sed

sed是Stream Editor(字符流编辑器)的缩写,简称流编辑器。sed是操作、过滤和转换文本内容的强大工具。常用功能包括结合正则表达式对文件实现快速增删改查,其中查询的功能中最常用的两大功能是过滤(过滤指定字符串)、取行(取出指定行)。

其基本语法格式为:sed[选项][sed内置命令字符][输入文件]

其中sed的选项主要有:

在这里插入图片描述

sed的内置命令字符用于对文件进行不同的操作功能,如对文件增删改查。其主要命令有:

在这里插入图片描述

sed进行范围匹配

在这里插入图片描述

注意:注意sed和awk使用单引号,双引号有特殊解释
下面我们开始进行案例演示依然我们依然使用上面的那个文件夹进行案例演示:

在这里插入图片描述

此时如果我们想要将第5行或者第6行的打印出来,此时我们就可以使用sed -n选项进行读取

在这里插入图片描述

我们在来一个案例我们想要输出含有linux的行:sed -n ‘/Linux/p’ test.txt

在这里插入图片描述

如果我们想要删除含有Linux的行又改怎么操作了?有老铁可能觉得这也太容易了直接 sed -n ‘/linux/d’ 不就行了吗?下面我们来执行一下看一下效果如何

在这里插入图片描述

可能有老铁会问为啥没有删除掉了,这是因为sed会按行将内容读取到内存当中我们删除的是内存当中的数据此时我们如果想要删除文件里面的内容我们可以使用-i选项就可以了。

下面我们换一个内容进行操作:

在这里插入图片描述

现在我们想要将My替换成为I 此时我们可以使用s///g来进行操作

在这里插入图片描述

下面我们在来一个案例如果我们想要在第2行的后面增加行内容 I love Linux
此时我们可以使用sed 的a选项

在这里插入图片描述

而i选项是在某一行进行插入而已

文本三剑客Awk

awk是一个强大的linux命令,有强大的文本格式化的能力,好比将一些文本数据格式化成专业的excel表的样式.awk更是是一门编程语言,支持条件判断、数组、循环等功能

下面我们来看一下awk的基本语法:awk [option] ‘pattern[action]’ file …

在这里插入图片描述

Action指的是动作,awk擅长文本格式化,且输出格式化后的结果,因此最常用的动作就是print和printf。
awk是按行处理文件,一行处理完毕,处理下一行,根据用户指定的分割符去工作,没有指定则默认空格

在这里插入图片描述

下面我们来看看awk的内置命令

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

下面我们来实践一下awk命令的使用,我们以这个文件为列进行操作。我们想要拿到第二列的值

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

或者我们想要第2行第2列和第3列的值此时我们又如何操作了?

在这里插入图片描述

注意awk分隔文件默认是按照空格进行分隔如果是其他字符我们则需要使用-v选项修变量或者 awk -F “分隔字符” 。awk输出的时候也是按照空格输出的如果我们想要指定可以使用 awk -v OFS ="分隔符"来进行设置。

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个追梦的少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值