正则表达式概述

在讲sed和awk之前,先要了解什么是正则表达式。正则表达式分为“基础正则表达式”和“扩展正则表达式”。正则表达式是一个字符串处理的标准依据,是使用单个字符搜索、匹配一系列符合某个语法规则的字符串。由a~z以及特殊字符(元字符)组成。如果要以正则表达式的方式处理字符串,就必须使用支持正则表达式的工具。如下表:

文本处理工具 基础正则表达式 扩展正则表达式
vi编辑器 支持
grep 支持
egrep 支持 支持
sed 支持
awk 支持 支持

基础正则表达式

基础正则表达式是常用的正则表达式部分。下表列出常用的元字符及作用。

元字符 作用
\ 转义字符,用于取消特殊符号的含义,如:!、\n等
^ 匹配字符串的开始位置,如^hello,匹配以hello开头的行
$ 匹配字符串的结束位置,如world$,匹配以world结尾的行
. 匹配除了\n(换行)以外的任意一个字符
[list] 匹配list列表中的一个字符,如[0-9]匹配任意一个数字
[^list] 匹配不在list列表中的一个字符,如[^0-9]匹配除了0-9以外的任意一个字符
{n} 匹配前面的子表达式n次,如[0-9]{2}匹配两位数字
{n,} 匹配前面的子表达式最少n次,如[0-9]{2}匹配两位数字或者两位以上的数字
{n,m} 匹配前面的子表达式最少n次,最多m次如[a-z]{2,3}匹配两到三位的小写字母
* 匹配前面的表达式0次或者多次

以/etc/passwd文件为例,我备份了一下做了一些修改
[root@localhost ~]# cp -p /etc/passwd /root/passwd.bak

下面以grep工具,对基本元字符的使用做一下介绍。
对于过滤的表达式如果匹配到会标红。



扩展正则表达式

扩展正则表达式是基础正则表达式的扩充与深化。常用的扩展元字符如下表:

元字符 作用
+ 匹配前面的子表达式至少1次,例如:ab+c,将匹配b最少一次
匹配前面的子表达式0次或者1次,例如:ab?c,将匹配ac或者abc
() 将()中的字符串作为一个整体来匹配,例如:a(bc)d,将匹配ad或者abcd
以或的方式匹配字符串,例如:abc

下面以grep工具,对扩展元字符的使用做一下介绍。使用grep工具需要配合“ -E ”选项才能使用扩展元字符,egrep工具与“grep -E”功能相同,所以基本都用egrep工具结合扩展元字符。


Sed工具

基本语法

sed -e ‘编辑指令’ 文件1 文件2 …
sed -n -e ‘编辑指令’ 文件1 文件2 …
sed -i -e ‘编辑指令’ 文件1 文件2 …

常用选项

-e 指定要执行的命令,只有一个执行命令时可以省略。
-n 只输出执行编辑指令之后的行,读入时不显示。
-i 直接编辑文件,而不输出结果。

常用指令

-p 输出指定行
-d 删除指定行
-s 替换字符串,用法与vi编辑器相同,格式:s/就字符串/新字符串/g
-r 读取指定文件
-w 保存为文件
-i 在当前行前面插入一行或多行
-a 在当前行后面插入一行或多行






Awk工具

基本语法

awk 选项 ‘模式或条件{编辑指令}’ 文件名
模式决定何时对数据进行操作,例如BEGIN,END;模式也可以为条件语句、复合语句或正则表达式。
awk -f 脚本文件 文件名

常见内置变量

FS:指定每行文本以什么字段分隔,默认为空格
OFS:指定以什么字段连接文本
NF:当前处理的行的字段个数
NR:当前处理的行号(序号)
$0:当前处理行的整行的文本内容
$n:当给处理行的第n个字段

shell之sed、awk相关推荐

  1. shell grep sed awk 练习

    把/etc/passwd 复制到/root/test.txt,用sed打印所有行: 2. 打印test.txt的3到10行: 3. 打印test.txt 中包含'root'的行: 4. 删除test. ...

  2. linux shell sed awk 命令(2)-awk

    linux shell sed awk 命令(2)-awk awk语法格式: awk [选项] -f program-file [ -- ] file ... 选项: -F fs, --field-s ...

  3. shell脚本、awk、sed用法

    shell sed awk 什么是shell 翻译官 内核与用户之间的解释器程序(/bin/bash) shell种类 配置文件:/etc/shells/bin/sh/bin/bash/sbin/no ...

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

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

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

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

  6. sed awk 笔记(二)

    都说sed awk 运维人员的必备工具.今天起开始整理相关笔记.首先认识一下这两个东西. 共性:使用相同的语法 [address]/pattern/action/flag 都是面向字符流的.从一个文件 ...

  7. linux grep sed awk

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

  8. Shell编程:awk使用总结

    1. 什么是awk awk是Unix/Linux提供的样式扫描与处理工具,非常擅长处理结构化数据和生成表单.与sed 和grep 很相似,但功能却超过大于两者,由于awk具备各种脚本语言的特点,所以也 ...

  9. linux shell cut sed

    cut是以每一行为一个处理对象的,这种机制和sed是一样的.(关于sed的入门文章将在近期发布) 2 cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切内容呢? cut命令主要是接 ...

  10. shell脚本中awk应用,数组的定义使用

    1.awk的基础应用 1.1,概念 除了使用 sed 命令,Linux 系统中还有一个功能更加强大的文本数据处理工具,就是 awk.它诞生于 20 世纪 70 年代末期,这也许是它影响了众多 Linu ...

最新文章

  1. CentOS中vsftp安装与配置
  2. 在Java Build Path中找不到超类“javax.servlet.http.HttpServlet”[重复]
  3. mysql 使用表 语句_【mysql】mysql 经常使用建表语句
  4. puTTY的配置导入和导出
  5. hdu 1257最少拦截系统(贪心)
  6. 机器人走方格(51Nod-1119)
  7. CSS环绕球体的旋转文字-3D效果
  8. 论文阅读之ALBERT
  9. xlswrite wps matlab,Matlab实例学习-----Matlab与Excel交互,Matlab作为自动化客户端调用Excel服务器...
  10. vb3计算机,2014年计算机二级考试VB试题 3
  11. ENSP路由交换机配置
  12. 计算机的软键盘在哪里,Win8软键盘在哪 Win8.1屏幕键盘打开方法图解
  13. 苹果账号续费以及过期更新问题
  14. 《如何阅读一本书》读后
  15. 第二篇数模论文——垂钓问题
  16. 计算机6005是开机时间,怎么查电脑的开机,和关机时间·,同学们
  17. C#编程,DateTime使用方法,时间转字符方法总结
  18. mysql oob_mysql 读写文件特性和OOB注入
  19. Vue教程-可视化图表
  20. 使用插件对温度植被干旱指数进行计算

热门文章

  1. NLP基础—3.文本表示
  2. 6.4 随机森林实战
  3. 算数or算卦,和业务人谈“预测”到底在谈啥?
  4. 末日帝国——Agile公司的困境 (5)
  5. 谁说五月是没有收获的季节
  6. Java中getclass(),class()与iinstanceof的区别与联系
  7. PyTorch:模型训练-模型参数parameters
  8. Synchronous Bidirectional Inference for Neural Sequence Generation
  9. linux 负载进程,Linux 中 D 状态的进程与平均负载
  10. 初中物理凸透镜成像动态图_人教版初中物理八年级上册 平面镜成像 公开课优质课课件教案视频...