文章目录

  • Linux三剑客
    • 三剑客特点及应用场景
    • grep
      • grep命令的基本格式
      • grep范例
      • grep命令选项
        • -A、-B
        • -c、-v
        • -n、-w
    • sed
      • sed命令基本格式
      • sed命令功能
      • sed执行过程
      • sed执行流程
      • sed流程解析
      • sed功能
        • 查找
        • 删除
        • 增加cai
        • 替换(重点)
        • sed的后向引用
    • awk
      • awk执行流程
      • awk执行案例分析
      • awk的内置变量
      • awk行与列
        • 取行
        • 取列
        • awk模式匹配
          • 比较
          • 正则
          • 表示范围
          • 特殊模式
      • awk数组
        • awk批量输出数组内容
  • 总结

Linux三剑客

Linux三剑客是grep、sed、awk三者的简称,熟练使用这三个工具程序可以提升工作效率,Linux三剑客是以正则表达式作为基础

Linux正则表达式

三剑客特点及应用场景

命令 特点 场景
grep 过滤 grep命令过滤文件速度是最快的
sed 替换、修改文件内容 对文件内容进行替换、修改,进行范围性的查找
awk 取列,统计计算 进行对比,比较(>、<、>= …);统计计算

grep

grep:命令全称为global regular expressions print,gerp命令能够在一个或多个文件中,搜索某一特定的字符模式(也就是正则表达式),此模式可以是单一的字符、字符串、单词或句子

grep命令的基本格式

grep [选项] 模式 文件名
选项:
-E:等同于egrep支持扩展正则表达式
-A:意为after,-A5 匹配内容并且显示接下来的5行
-B:意为before,-B5 匹配内容并且显示上面的5行
-c:列出文件中包含模式的行数,等同于wc -l
-v:列出没有匹配模式的行
-n:列出行号
-w:精准匹配,把表达式当做一个完整的单字符来搜寻

grep范例

grep命令范例文件emp.txt

101:China:Clack
102:American:Franklyn
103:England:Shelock
104:Canada:Henry
105:Russian:Wendy
106:Japan:Sukura
107:Korea:Irene
108:Germany:Bob

grep命令选项

-A、-B

-c、-v

-n、-w

grep的命令很强大,通过利用它的不同选项以及千变万化的正则表达式可以过滤出我们所需要的信息

sed

sed:命令全称为stream editor,流编辑器,主要用来过滤和替换文本

sed命令基本格式

sed [-nefr] [操作]
选项:
-n:只有经过sed处理的那一行内容才会别列出来,不加n默认显示所有内容
-e:直接到命令行模式上进行sed操作
-f:将sed操作写在一个文件内
-r:sed的操作使用的是扩展型正则表达式,默认为基础正则表达式
-i:直接修改文件内容而不是屏幕输出
操作说明:[n1,[n2] ] function
n1,n2:选择进行操作的行数
function选项:
c、a、i:新增字符
d:删除
p:打印,将选择的数据整个打印出来,以行号为单位
s:替换,可以直接进行替换工作,可以搭配使用正则表达式,以行号为单位

sed命令功能

sed本身是一个管道命令,可以将数据进行替换、删除、新增、选取等特定功能

功能 功能说明
s substitute替换
p 显示print
d 删除delete
cai 增加

sed执行过程

sed命令:sed -n ‘3p’ emp.txt,输出结果为:

sed执行流程

sed流程解析

  1. sed程序执行sed命令:sed -n ‘3p’ emp.txt 进行处理
  2. sed为流编辑器,对文件emp.txt内容一行一行读入内存中进行处理,将读入内存的一行内容进行判断
  3. 判断是否为第三行内容,不是则判断是有选项n,有则直接处理下一行,没有则将内存中写入的文件的一行内容输出
  4. 若判断文件改行的内容为第三行,则进行sed命令的功能操作,该命令中为p则打印第三行内容
  5. 例子当中没有加n选项时,第三行内容输出了两遍,是因为没有n时为默认输出,则文件中中的内容全部输出,但是又因第三行满足命令所需,则又会输出一次

sed功能

查找

删除

增加cai

  • c:replace替代这行的内容
  • a:append,向指定的行或每一行追加内容
  • i:insert,向指定的行或每一行插入内容

替换(重点)

替换格式:s###g,s///g,s@@@g
#、/、@任意特殊字符都可以都表示同一个意义,一般表示使用#、/,支持正则表达式
s:替换功能的表示
g:global,全局替换,sed默认只替换每一行匹配的内容,不加g只会进行匹配

sed的后向引用

awk

awk是一门语言,是一个比sed更加强大的文本数据处理工具,awk取自于3位大师的首字母即:Aho、Weinggerger、Kernighan;主要用于过滤统计日志和计算

awk执行流程

awk执行案例分析

  1. 在awk读取文件emp1.txt之前执行BEGIN{}中的print “Test action start”
  2. 然后awk读取文件时,判断文件读取行数是否满足条件NR==3(即行号为3),满足该条件则执行对应的工作print $2,打印该行数对应的第二列值为England
  3. 读取文件之后,执行END{}中的print “end of file”

awk的内置变量

内置变量
NR Number of Record 记录号,行号
NF Number of field 每行有多少字段,$NF表示最后列
FS Field Separator 字段分隔符,每个字段结束标记
OFS Output Field Separator 输出字段分隔符,awk显示每一列之间的分隔符

awk行与列

行与列 在awk中说明 补充说明
记录record 每一行默认通过回车分割
字段、域、field 每一列默认是通过空格分割的

awk中的行与列的结束标志及分割标识是可以修改的

取行

awk表达式 意义
NR==1 取出某一行
NR>=1&&NR<=5 取出1-5行范围
/word/ 找到特定word
/n1/,/n2/ 找到指定范围

取列

awk参数-F,标识指定分隔符,即指定每一列结束符标记(默认为空格、连续的空格、tab制表符)

数字:标识取出该对应的数字列,与数字:标识取出该对应的数字列,与数字:标识取出该对应的数字列,与内容是一个意思,数字为0时为整行的内容

awk模式匹配

awk -F, ‘NR==3{print $2}’
命令 选项 ‘模式,条件(动作)’

模式、条件可以分为:比较、正则、范围表达式、特殊条件(BEGIN、END)

比较

比较符号:>、<、>=、<=、==、!=

正则
  • //:支持扩展正则
  • awk可以精准到某一列,某一列中可以包含或不包含某个条件的内容
  • ~:包含
  • !~:不包含
一般正则 awk正则
^:表示以某个开头的行 某一列的开头
$:表示以某个结尾的行 某一列的结尾
^$:表示空行 某一列为空

表示范围
  • /开始 /,/结束/,常用的用法
  • NR == 1,NR==最后一行

特殊模式
  • BEGIN:在awk读取文件前打印信息
  • END:在awk读取文件之后打印信息

awk数组

awk数组主要用于统计日志、统计次数、累计求和

  • 统计日志
  • 统计次数:如统计每个ip出现次数、每种状态码出现的次数
  • 累计求和:每个ip消耗的流量
awk数组
形式 array[0]=“hello” array[1]=“dance”
使用 print array[0] array[1]
批量输出数组内容 for(i in arrayname)
print arrayname[i]
awk数组专属循环,i获取的是数组的下标,数组内容为arrayname[i]
if判断 if(条件)
print “some”
else
print “something else”

awk字母会被识别成变量,如果使用字符串需要加上双引号

awk批量输出数组内容

总结

grep命令能够在一个或多个文件中,搜索某一特定的字符模式(也就是正则表达式),此模式可以是单一的字符、字符串、单词或句子;sed采用的是流编辑模式,最明显的特点是,在 sed 处理数据之前,需要预先提供一组规则,sed 会按照此规则来编辑数据;wk 命令也是逐行扫描文件(从第 1 行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理

赶紧学习起来吧!我是一个正在努力找回自我的人,希望能和一起学习的人成长,有错误的地方请各位大佬帮忙指正,如果觉得有帮助就点个赞当作对我的一个小肯定❤,peace&love

【Linux上分之路】第十二篇:Linux三剑客grep、sed、awk相关推荐

  1. linux i2c adapter 增加设备_「正点原子Linux连载」第六十二章Linux SPI驱动实验(一)...

    1)实验平台:正点原子Linux开发板 2)摘自<正点原子I.MX6U嵌入式Linux驱动开发指南>关注官方微信号公众号,获取更多资料:正点原子 第六十二章Linux SPI驱动实验 上一 ...

  2. 【正点原子Linux连载】第六十二章 Linux SPI驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  3. 【Linux上分之路】第一篇:Linux简介、发行版、开源协议

    文章目录 Linux Linux的优点 Linux分类 Linux发行版本 RedHat Linux Ubuntu Linux Linux系统结构 1.内核层 2.Shell层 3.应用层 Linux ...

  4. Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)

    shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...

  5. 15分钟搞定Linux三剑客 grep sed awk

    剑客grep 来者何人 grep是linux上的字符串搜索匹配命令.这个名字来自于linux编辑器vim的一个命令g/re/p,表示全局匹配某个正则表达式并打印出来,这也体现了grep自身的功能. 基 ...

  6. ES6之路第十二篇:Promise对象

    Promise的含义 Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大.它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Prom ...

  7. 【Mysql上分之路】第三篇:Mysql安装与配置、目录结构

    文章目录 :blush:MySQL的安装与配置 :smiley:MySQL安装步骤 :grin:MySQL配置步骤 :open_mouth:MySQL的目录结构 :fu:bin目录 :fu:data目 ...

  8. Linux三剑客 grep sed awk 详细使用方法

    Linux中最重要的三个命令在业界被称为"三剑客",它们是awk,sed,grep. 我们现在知道Linux下一切皆文件,对Linux的操作就是对文件的处理,那么怎么能更好的处理文 ...

  9. linux下查找文件及文件内查找内容--find/grep/sed/awk

    1.find 查找到想要的文件或目录 格式:find  [path]   [-OPTION]  [-exec |grep  |xargs   -ok  -print   | --]   [comman ...

最新文章

  1. 《OpenCV3编程入门》学习笔记10 角点检测(三)亚像素级角点检测
  2. Kafka Zero-Copy 使用分析
  3. Mysql和Hadoop+Hive有什么关系?
  4. Linux命令之---rm
  5. (NO.00001)iOS游戏SpeedBoy Lite成形记(十)
  6. 字符串操作 c语言,C语言字符串操作(示例代码)
  7. Hadoop入门(十五)Mapreduce的数据排序程序
  8. spark sql 上个月_Spark学习之路 (十八)SparkSQL简单使用
  9. 新计算机 安装win2000,图文教程!Windows 2000安装过程全接触
  10. using关键字的用法以及作用
  11. HTML Agility Pack:简单好用的快速 HTML Parser
  12. 可用计算机处理的多种信息载体的统称,广西壮族自治区2019-2020学年语文四年级下册第二单元测试卷B卷(6页)-原创力文档...
  13. Linux内核模块编程入门( 最简单的内核模块编程)
  14. ChinaSkills-网络系统管理001(网络应用赛项改革)
  15. Selenium 模拟键盘操作
  16. word中-文字尾部空格自动添加下划线的步骤
  17. c语言的关键字母大小写表示,英语26个字母大小写标准写法
  18. 中国生物农药市场投资前景及“十四五”规划建议报告2022-2028年
  19. Linux命令-PV
  20. End-to-End Object Detection with Fully Convolutional Network

热门文章

  1. linux系统 oracle 11g字符界面详细安装过程
  2. iOS OC Sugars collection
  3. 角色原画设计中的节奏感如何把握?
  4. C语言 赋值抑制字符*
  5. java什么时候会触发类加载_Java 类加载器classLoader | 七日打卡
  6. 数据中心网络设备管理(一)
  7. 设计模式之工厂模式(Factory)
  8. html入门之用html给女朋友写封精致的情书--小白直接拿去用,一点难度都没有
  9. springboot+shiro自定义拦截器互踢问题
  10. 改变人生的不是道理,而是习惯!(深度好文)