Linux三剑客命令(grep,awk,sed)

本教程是一些Linux命令中关于grep、cut、printf、sed、awk 的一些基本用法,没有过多的固定格式化语法,而是通过鲜明的对比与例子进行演示,旨在方便大家更好的记忆与理解!

1、grep正则
匹配日期格式 YYYY-MM-DD
[0-9]{4}-[0-9]{2}-[0-9]{2}
匹配IP地址
[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}
在这里我创建了一个a.txt文件 内容如下
在这里插入图片描述

通过grep正则表达式匹配日期 grep ‘[0-9]{4}-[0-9]{2}-[0-9]{2}’ a.txt
在这里插入图片描述
通过grep正则表达式匹配IP地址
在这里插入图片描述

注意:这里的 grep -v “root” 意思是 去除带"root的行" 与 grep “root” 相反
在这里插入图片描述

2、Cut

cut [选项] 文件名
选项
-f 列号 :提取第几列
-d 分隔符 :按照指定分隔符分割列

创建如下制表符分隔的文件
在这里插入图片描述

这里注意下: 如果不用-d去指定,它的默认分隔符是制表符–tab,结果如下
在这里插入图片描述

Cut命令的局限 df -h | cut -d " " -f 1,3
在这里插入图片描述
也就是说 我们以空格做切分,并没有得到完整的数据 下面会以其他方式解决

3、printf命令

printf ‘输出类型输出格式’ 输出内容
在这里插入图片描述

下面调整下输出格式
在这里插入图片描述

4、awk

awk ‘条件1{动作1} 条件2 {动作2}…’
条件:一般使用关系表达式作为条件
动作:格式化输出,流程控制语句
这里注意下:awk的默认分隔符是空白(包含空格和制表符)
在awk命令的输出中时支持printf命令的 下面演示代码中的printf也可以换成print
在这里插入图片描述

看看,前面用的cut方式没有得到对应的列 用awk的方式前面那个问题是不是迎刃而解了
在这里插入图片描述

下面来演示下 awk、grep、print、cut的综合应用
在这里插入图片描述

BEGIN关键在最开始执行,而且只执行一次
在这里插入图片描述

同理,END关键字在最后执行,而且也执行一次
在这里插入图片描述

awk 条件 {动作},这里是先通过 grep -v name 去除了带有name的行哦
在这里插入图片描述

这里awk还有一个常用的变量FS,下面我们来应用一下 它是对每行的数据根据某条件进行切分
其中cat /etc/passwd | grep /bin/bash结果是:
在这里插入图片描述
在这里插入图片描述

5、sed命令

sed 是一种几乎包括在所有UNIX平台(包括Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令
sed [选项] ‘[动作]’ 文件名

[选项]
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)

[动作]
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
-i :直接修改读取的文件内容,而不是输出到终端。

不带-n是输出文件的全部 带 -n是输出指定行
在这里插入图片描述

删除(delete)第三行到第四行的数据
在这里插入图片描述

这里注意下 a (append)与 i (insert)的区别 append是在后面追加数据 insert这里是在它的指定行插入
在这里插入图片描述

对指定行进行替换
在这里插入图片描述

在指定行对字符串进行替换
在这里插入图片描述

注意上面的替换并没有真正写入数据文件中 如果想要写入文件中 需要 加上选项 -i 如下
在这里插入图片描述

好了,今天的分享就到这里吧,那你今天收获了多少呢

猜你喜欢

转载自blog.csdn.net/weixin_38653290/article/details/84555846