shell之sed、awk
正则表达式概述
在讲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相关推荐
- shell grep sed awk 练习
把/etc/passwd 复制到/root/test.txt,用sed打印所有行: 2. 打印test.txt的3到10行: 3. 打印test.txt 中包含'root'的行: 4. 删除test. ...
- linux shell sed awk 命令(2)-awk
linux shell sed awk 命令(2)-awk awk语法格式: awk [选项] -f program-file [ -- ] file ... 选项: -F fs, --field-s ...
- shell脚本、awk、sed用法
shell sed awk 什么是shell 翻译官 内核与用户之间的解释器程序(/bin/bash) shell种类 配置文件:/etc/shells/bin/sh/bin/bash/sbin/no ...
- Shell ❀ 三剑客 - Grep + Sed + Awk
文章目录 八.三剑客 - Grep + Sed + Awk 1.Grep - 过滤 1.1 常用grep参数 1.2 使用方法 2.Sed - 行匹配 2.1 执行原理 2.2 常见语法 2.3 使用 ...
- Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)
shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...
- sed awk 笔记(二)
都说sed awk 运维人员的必备工具.今天起开始整理相关笔记.首先认识一下这两个东西. 共性:使用相同的语法 [address]/pattern/action/flag 都是面向字符流的.从一个文件 ...
- linux grep sed awk
linux 文本编辑命令grep sed awk(转) grep grep (global search regular expression(RE) and print out the li ...
- Shell编程:awk使用总结
1. 什么是awk awk是Unix/Linux提供的样式扫描与处理工具,非常擅长处理结构化数据和生成表单.与sed 和grep 很相似,但功能却超过大于两者,由于awk具备各种脚本语言的特点,所以也 ...
- linux shell cut sed
cut是以每一行为一个处理对象的,这种机制和sed是一样的.(关于sed的入门文章将在近期发布) 2 cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切内容呢? cut命令主要是接 ...
- shell脚本中awk应用,数组的定义使用
1.awk的基础应用 1.1,概念 除了使用 sed 命令,Linux 系统中还有一个功能更加强大的文本数据处理工具,就是 awk.它诞生于 20 世纪 70 年代末期,这也许是它影响了众多 Linu ...
最新文章
- CentOS中vsftp安装与配置
- 在Java Build Path中找不到超类“javax.servlet.http.HttpServlet”[重复]
- mysql 使用表 语句_【mysql】mysql 经常使用建表语句
- puTTY的配置导入和导出
- hdu 1257最少拦截系统(贪心)
- 机器人走方格(51Nod-1119)
- CSS环绕球体的旋转文字-3D效果
- 论文阅读之ALBERT
- xlswrite wps matlab,Matlab实例学习-----Matlab与Excel交互,Matlab作为自动化客户端调用Excel服务器...
- vb3计算机,2014年计算机二级考试VB试题 3
- ENSP路由交换机配置
- 计算机的软键盘在哪里,Win8软键盘在哪 Win8.1屏幕键盘打开方法图解
- 苹果账号续费以及过期更新问题
- 《如何阅读一本书》读后
- 第二篇数模论文——垂钓问题
- 计算机6005是开机时间,怎么查电脑的开机,和关机时间·,同学们
- C#编程,DateTime使用方法,时间转字符方法总结
- mysql oob_mysql 读写文件特性和OOB注入
- Vue教程-可视化图表
- 使用插件对温度植被干旱指数进行计算
热门文章
- NLP基础—3.文本表示
- 6.4 随机森林实战
- 算数or算卦,和业务人谈“预测”到底在谈啥?
- 末日帝国——Agile公司的困境 (5)
- 谁说五月是没有收获的季节
- Java中getclass(),class()与iinstanceof的区别与联系
- PyTorch:模型训练-模型参数parameters
- Synchronous Bidirectional Inference for Neural Sequence Generation
- linux 负载进程,Linux 中 D 状态的进程与平均负载
- 初中物理凸透镜成像动态图_人教版初中物理八年级上册 平面镜成像 公开课优质课课件教案视频...