Linux三剑客

  • 正则表达式

    1. 正则表达式(regular expression)?

匹配有规律的东西:手机号、身份证号、匹配日志;

使用一些符号表达一些重复出现、大小写、开头/结尾含义;

  1. 应用场景

Linux三剑客使用,开发语言;

过滤有规律的内容,尤其是日志;

  1. 正则注意事项

所有符号为英文符号;

学习正则,通过grep命令学习,grep加上单引号;

给grep、egrep加上颜色alias grep=’grep --color=auto’  alias egrep=’egrep --color=auto’;

注意系统的字符集:en_US.UTF-8,如出现问题修改字符集为C export LANG=C;

配合grep -o(只显示匹配的内容)参数学习

  1. 正则符号

基础正则:

  1. ^ 以……开头的行   例:grep ‘^og’ my.txt 从my.txt中找以og开头的行;
  2. $ 以……结尾的行   例:grep ‘og$’ my.txt 从my.txt中找以og结尾的行;
  3. ^$  空行 例:grep -nv  ‘^$’ my.txt 排除空行
  4. . 任意一个字符  例:grep ‘.’ my.txt  显示除空行外的内容
  5. \ 转义字符     例:grep ‘\.$’ my.txt  匹配以.结尾的的行

转义字符序列:\n 回车换行;\t tab键

  1. * 前一个字符连续出现0次或0次以上 例:grep ‘0*’ my.txt,包括为空的内容
  2. .* 所有内容 ;正则表达式的贪婪性:.*表示所有或*连续出现的时候,会尽可能贪婪的匹配更多,
  3. []  [asd] 一次匹配任意一个字符(a或s或d)  例:grep ‘[asd]’ my.txt

[a-z]  [A-Z]  [0-9]  [a-zA-z]==[a-Z]== -i [a-z]

[^abc] 匹配除abc以外的内容

扩展正则:

  1. + 前一个字符连续出现1次或1次以上,例:egrep -o ‘[0-9]+’ my.txt,匹配数字
  2. | 或者;例:egrep  ‘[my|you]+’ my.txt,匹配my或you的数字
  3. () 被括起来的内容,表示一个整体(字符);反向引用sed

例:egrep ‘wom(a|e)n’ my.txt ==egrep ‘woman|women’ my.txt

  1. {} 连续出现   o{n,m}   前一个字母o至少连续了n次,至多连续出现了m次

o{n}   前一个字母o连续了n次

o{n,}  前一个字母o至少连续出现了n次,>=n

o{,n}  前一个字母o至多连续出现了n次,<=n

  1. ? 连续出现,前一个字符出现0次或1次

例:egrep ‘go?d’ my.txt == egrep ‘god|gd’ my.txt

  • 三剑客特点和应用场景

命令

特点

场景

grep

过滤

过滤速度最快

sed

替换、修改文件内容、取行

替换/修改文件内容

取某个范围的内容(9:00-10:00日志)

awk

取列,统计计算

取列

对比、比较

统计、计算

  • 三剑客grep

-i 忽略大小写

-E 启用POSIX扩展正则表达式

-P 启用perl正则

-o 只输出正则表达式匹配的内容

-w 整字匹配

-v 不匹配的

-n 输出行号

-A  after,显示匹配内容的下5行

-B  before,显示匹配内容的前5行

-C  contxt,显示匹配内容的前后5行

-c  统计出现了多少行,类似于wc -l

  • 三剑客sed
  1. 功能

功能

s

替换substitute

d

删除delete

p

显示print

cai

增加c/a/i

  1. Sed核心应用

查找格式

‘2p’

指定行号查找

‘1,5p’

指定行号范围查找

‘//p’

类似grep过滤,//里面可以写正则,加-r参数使用扩展正则

‘/sid/p’

‘/10:00/,/11:00/p’

表示范围的过滤(结束条件找不到会显示到最后一行)

‘3d’

删除指定行

不需要加-n

c

replace,替代这行的内容

a

append,向指定的行或每一行追加内容(行后面)

sed ‘3a dfsd,sdfsd’ my.txt,在第三行下面追加……

i

Insert,向指定的行或每一行插入内容(行前面)

s

s###g,默认替换第一个,g是全局

sed -n ‘4,$p’ my.txt 找第4行到最后一行

sed -nr ‘/^$|*/!p’ my.txt  遇到空行和*不显示

echo 123456 |sed -r ‘s#(.*)#<\1>#g’     输出<123456>

先保护再使用(.*)表示所有,<\1>表示在第一个括号内容上加<>

  • 三剑客awk

1、

名词

awk中叫法

说明

记录,record

每一行默认通过回车分割

字段、域、field

每一行默认通过空格分割

  1. 取行

awk

NR==1

取出第一行

NR>=1&&NR<=5

取1到5行

//

//里写过滤条件

//,//   取范围

  1. 取列

-F 指定分隔符,指定每一列结束标记(默认为空格、连续空格、tab键)

$  取出某一列,  如:awk ‘{print $5,$9}’ | column -t 打印第5、9列对齐显示

$0  整行的内容

$NF 最后一列

  1. awk内置变量

内置变量

NR

记录号,行号

NF

每行有多少字段(列)

OFS

每一列以什么分割,默认空格

  1. awk模式

awk

-F”[ /]+”

‘NR==3{print $3}’

命令

选项

‘条件{动作}’

  1. awk正则

正则

awk正则

^ 表示以……开头

$3~/^g/ 第3行以g开头的列

$ 表示以……结尾

$3~/g$/ 第3行以g结尾的列

^$ 空行

空行

  1. 特殊模式BEGIN{}和END{}

模式

含义

应用场景

BEGIN{}

{}里内容会在awk读取文件前执行

  1. 进行简单统计计算
  2. 处理文件前添加表头

END{}

{}里内容会在awk读取文件后执行

  1. awk进行统计计算,在end里输出结果
  2. awk使用数组,用来输出数组结果
  1. 统计方法

统计方法

i++

i=i+1

统计次数

sum=sum+???

sum+=???

求和

array[]++

array[]=array+1a

数组分类统计,中括号写要统计的列

awk ‘/^$/{i++}END{print i}’ /etc/log    统计空行

seq 100 |awq ‘{sum=sum+$1}END{print sum}’   求1加到100的和

  1. awk数组

shell数组

awk数组

形式

array[0]=name array[1]=number

array[0]=name   array[1]=number

使用

Echo ${array[0]}  ${array[1]}

print array[0] array[1]

批量输出数组内容

for i in ${array[*]}

do

echo $i

done

for i in array

print array[i]

Linux三剑客(grep、sed、awk)相关推荐

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

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

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

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

  3. Shell ❀ 三剑客 - Grep + Sed + Awk

    文章目录 八.三剑客 - Grep + Sed + Awk 1.Grep - 过滤 1.1 常用grep参数 1.2 使用方法 2.Sed - 行匹配 2.1 执行原理 2.2 常见语法 2.3 使用 ...

  4. 三剑客grep sed awk

    三剑客 正则(RE)表达式 应用场景 规则 注意事项 正则符号 基础正则 扩展正则 正则实例 正则 VS 通配符 三剑客 grep sed sed核心应用 awk awk执行过程 内置变量 awk 正 ...

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

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

  6. 深入浅出linux三剑客之sed必杀技一例

    缘起:上完培训课后,同学们对sed加正则处理问题的热情高涨,氛围相当好,但是,有个别同学还是有些晕乎,因此,撰写此文.此例如果搞熟练了,sed和正则的大部分常用技术你掌握起来就简单了. 如果还有不会的 ...

  7. linux三剑客及正则表达(grep,sed,awk)

    首先我们现在知道Linux下一切皆文件,对Linux的操作就是对文件的处理,那么怎么能更好的处理文件呢?这就要用到我们上面的三剑客命令. 在说这三个命令前我们要插入一个小插曲就是"正则表达式 ...

  8. linux grep sed awk

    linux 文本编辑命令grep sed awk(转)     grep grep (global search regular expression(RE) and print out the li ...

  9. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  10. 正则表达式与扩展正则表达式(grep, sed, awk)

    Linux中用来在文件中搜索字符串的命令,如grep, sed, awk等命令支持正则表达式与扩展正则表达式. 1. 基础正则表达式 符号 解释 示例 * 匹配0次或多次 b.*t . 匹配任意字符 ...

最新文章

  1. 刘偲:AI+艺术 | 青源 Talk 第 11 期
  2. 在kubernetes集群中部署mysql主从
  3. 极大似然估计_极大似然估计、极大后验估计和贝叶斯估计
  4. power linux 安装系统,powershell 安装服务器
  5. 基础数据仓库环境搭建(一)数据仓库概述
  6. springboot @PropertySource+@Value注入properties配置文件属性值
  7. OpenCASCADE:使用DRAW绘图
  8. 用计算机进行资料检索工作是,用计算机进行资料检索工作是属于计算机应用中的什么...
  9. C语言union关键字
  10. include包含头文件的语句中,双引号和尖括号的区别
  11. 吴孟超:用一生为理想去奋斗 丨纪念吴孟超医生
  12. PowerDesigner 表名、字段大小写转换
  13. java线程wait()使一个线程一直运行,一直提供服务
  14. webservice的css哪里添加,XML+XSLT+CSS+JQuery+WebService组建Asp.Net网站
  15. Centos7下安装python3
  16. VMware vSAN 的内部版本号和版本 (2150753)
  17. jQuery Validate 表单验证插件----Validate简介,官方文档,官方下载地址
  18. shader变体是什么_[Unity/shaderlab]关于着色器变体
  19. Unity3D实习生面试题总结-图形学相关
  20. Win10 无法保存对hosts权限所作的更改 拒绝访问

热门文章

  1. hwaddr和macaddr的区别
  2. android p cts camera测试 android.hardware.camera2.cts.CaptureRequestTest#testEdgeModeControl fail
  3. Windows 文件系统格式 Raw格式转换NTFS
  4. 数字图像处理不得不知的点(1)
  5. 无线网络dns服务器设置,无线网络的dns怎么设置才正确
  6. layui调用相册功能和点击按钮调用相册功能
  7. cmd下批量pingIP地址
  8. java前景以及职业发展方向
  9. 2018中国服务器市场出货量年成长23%,华为出货创新高
  10. 美团实习| 周记(二)