linux正则表达式且关系,Linux正则表达式与三剑客

前面我们学习了Linux的基本命令,不到50个吧,这些命令仅仅使我们学会使用Linux,但是想要玩儿好Linux还不是不够的,下面我讲下Linux中最重要的三个命令在业界被称为“三剑客”。他们是awk,sed,grep.我们现在知道Linux下一切皆文件,对Linux的操作就是对文件的处理,那么怎么能更好的处理文件呢?这就要用到我们上面的三剑客命令。具体怎么使用就是我们今天要讲的:Fjozn29sczqLosWhTekAdRUlBmbX

在说这三个命令前我们要插入一个小插曲就是“正则表达式”。

什么是正则表达式呢?39557

所谓的正则表达式我个人理解就是正规的表示方法。他是用简单的方法来实现强大的功能,所以深受计算机爱好者的使用。学习起来非常不易,为了大家能更好的熟练的使用他们,我在这里做个简单的总结:

首先我说下我们作为Linux运维为什么要使用他?Fti3lxqZO8r50TpZ7_XXdQ5YOIej

Linux下一切皆文件,在工作中我们大多的操作都是对文件的处理,在以后shell脚本中使用,更是能让我们代码短小精悍。总之就是一句能大大的提高我们的工作效率。

三剑客与正则表达式是什么关系呢?FpdydiVRJAYUBmOSpPT-1nu8ft4L

我们可以这样理解,三剑客就是普通的命令,有的把他们叫做工具,在我看来都一样。而正则表达式就好比一个模版。三剑客能读懂这个模版。就这么简单。注意只有三剑客才能读懂这个模版哦!

现在他们的关系和功能都搞懂了,接下来我们就来认识下他们怎么结合的。正则表达式是一个模版,这个模版是由一些普通字符和一些元字符组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。具体如下元字符功能意思

^匹配行首表示以某个字符开头

$匹配行尾表示以某个字符结尾

^$空行的意思表示空行的意思

.匹配任意单个字符表示任意一个字符

*字符*匹配0或多个此字符表示重复的任意多个字符

\屏蔽一个元字符的特殊含义表示去掉有意义的元字符的含义

[]匹配中括号内的字符表示过滤括号内的字符

.*代表任意多个字符就是代表任意多个字符

lele\{n\}用来匹配前面lele出现次数。n为次数就是统计前面lele出现的次数

lele\{n,\}含义同上,但次数最少为n从功能就可以看出

lele\{n,m\}义同上,但lele出现次数在n与m之间从功能也可以看出lele\{n,m\}义同上,但lele出现次数在n与m之间从功能也可以看出

再说正则表达式使用前,在这里我先告诉大家,三剑客的功能非常强大,但我们只需要掌握他们分别擅长的领域即可。同样在这里我还给大家做了总结,大家只要把他们背下来即可:grep擅长查找功能,sed擅长取行和替换。awk擅长取列。

我们先看下grep命令39557

说道查找我们有必要回顾下前面说过的查找命令which,find.which是查找命令的,find是查找文件或者目录的。我们这里的grep是查找文件内容的。

例如我想查找/etc/passwd文件内包含有root字符的行。

Frbmbu5O3VpsaMnuj6Y_23cttI_-

Grep命令有几个参数有必要跟大家说下

-c :计算找到 "搜寻字符串"的次数

-i:忽略大小写的不同,所以大小写视为相同

-n:顺便输出行号

-v :反向选择,亦即显示出没有 "搜寻字符串"内容的那一行!

--color=auto :可以将找到的关键词部分加上颜色的显示喔!

我们刚才查的是没有颜色的,现在我们让他有颜色,怎么弄呢,这就要用到我们的命令别名了。看下面

Fqdrnb5GR5JpCXJ9OicfYZYEzSve

我们有时还想知道行数,那怎么办呢?用-n就可以了

Fm7UE6GOfoQTANhxjFe-tDSNBcQJ

但我们有时想查找不包含root的行,那怎么弄呢?对用-v即可

FmdhgQR9e3CRKh8NbSIU1IUYrP8l

Grep与正则表达式

查找以s开头的行

Fv7YqPjC0tTYubQkTmQ5N1rNlecF

查找以n结尾的行

Flm5OsbHxIXT_8YqB09GktYFWeVW

至于别的元字符使用,我们先不了解,在这里我们最重要的掌握住少量的使用,日后在慢慢扩展。

Sed命令FrUsQd9YgHUMz3vyqH52fb_HPB5h

Sed我们说是擅长取行和替换,说到取行,我们前面是不是说过head和tail,这两个命令也可以取行的。那么sed命令是怎么取行的呢?看下面

FlEU-bazMjbA2y95LwAPrJq8KqQz

有童鞋说我现在想取出2到5行的内容看下

FvRosbcsI9vXaS0OJxMDzDOAVkon

以上就是sed取行的功能,下面我们说说他的替换功能,有时我们不想进入文件内但又想把文件内容给替换了,这时候sed就可以帮助到我们啦!

g:是全局的意思。其中#是格式符,他也可以是@或者别的/。

Sed命令的功能很多,我们在这里就暂时先掌握这两种,不要贪多。

Sed替换格式是:sed -i "s#要替换的内容#替换成的内容#g文件名。

awk命令Fr3IjUf1CYut_4o0NspDuhaL3m4Z

awk命令我们前面说他是擅长取列,其命令格式是:awk‘{}’。接下来看看怎么使用

我们现在想取出/etc/passwd文件中第二列,在Linux命令中有一个命令可以实现,我前面没讲到,他就是cut.我们先看下cut怎么实现的

FrzfemI0DzoXWS-zupvvh3jGh4gT

上面是我们用cut取出etc/passwd文件以:为分隔符的的第一列。Cut命令的参数-d是指定分隔符,-f是指定列。后面是文件。如果显示多列呢如下

FsBb49pLVDr5hnX6f1ohslaOo9u1

从上面可以看出就是在指定列的后面在加上逗号,于列的序数即可。Cut还有很多功能,我们在这里也是只说他取列的功能,别的功能咱们咱不要考虑。下面看我们的awk命令怎么取列的

FgqSbbO7TbrYzopwHtOsd-LDWG3w

想取出多列就如下

FmxGXOU55GyX0aZEVsgYomLxNkZK

也就是在$1后面加上一个逗号和$n “n”就是第几列的意思。

至于sed与awk他们和正则表达式的结合,我们在后面脚本会详细的说明。这里我们只要知道以上功能就可以了。Fokh13gIcQI6grYe0tjT0xhSe0Id

看到了简单吧!就是这么简单,好多童鞋在学习三剑客的时候都不知道怎么下手,在这里我给你大家用总结加例子的方式告诉大家,是不是很简单!FuZOBaBkUxPDnH-7vN7GwewlWL3-

下节我们讲下通配符及学习Linux的个人思想!FjC0nbrDEwSHuYFPjznwKh6eKjAa

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值