Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >sed中的正则匹配

sed中的正则匹配

作者头像
生信编程日常
发布于 2020-06-29 07:54:36
发布于 2020-06-29 07:54:36
7.4K00
代码可运行
举报
运行总次数:0
代码可运行

sed很早就支持正则表达式了,这在文件处理中非常有用,以下列出一些常见用法(GNU SED版本)。

1. 行首/行尾

行首用^表示,行尾用$表示。例如有如下test.txt文件:

如果我们想把其中第一列的Potri.去掉,那么可以:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sed 's/^Potri.//g' test.txt 

假如想在最后数字的后面加一列"yes":

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sed 's/$/\tyes/g' test.txt
2. 匹配字符

(来自https://wiki.jikexueyuan.com/project/unix/regular-expressions.html)

比较常用的有:

字符

含义

.

匹配除换行符以外的任意字符

\w

匹配字母或数字或下划线

\s

任意的空白符(包括空格制表符换页符)

[0-9]

任意0到9中数字

[a-zA-Z]

26个英文字母中的一个,不区分大小写

3. 匹配在列表中的任意字符

用[]代表这样的列表,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo -e "Cat\nBat\nHat" | sed -n '/[CH]at/ p'

结果输出: Cat Hat []代表从其中选择一个。

4. 不在列表中的任意字符
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo -e "Cat\nBat\nHat" | sed -n '/[^CH]at/ p'

仅输出Bat。

5. 匹配出现某种次数(+; * ; ?; {n}; {n,}; {m,n})

出现不止一次(>= 1): \+ 出现0或1次:\? 出现n次:{n} 出现>=n次:{n,} 出现m到n次:{m, n}

注意前后括号{}都需要转义。

6. 或者

或者 | 常与 () 一起使用,注意两者都需要反斜杠\转义。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo -e "Cat\nBat\nHat" | gsed -n '/\(C\|B\|H\)at/p'
7. 特殊字符转义

一些特殊字符比如换行符\n或者回车\r等,匹配的时候在前面再加一个反斜杠转义,如\\r。

8. 例子

匹配上海市电话号码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# eg. 021-52060888
echo 021-52060888 | sed -n '/^012-[0-9]\{8\}/p'

匹配ip地址:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo '127.255.255.254' | sed -n '/[0-9]\+.[0-9]\+.[0-9]\+.[0-9]\+/p'

值得注意的是,在sed中不支持\d匹配数字,此处须用[0-9]。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《Linux命令行与shell脚本编程大全》第二十章 正则表达式
20.1 什么是正则表达式 20.1.1 定义 正则表达式是你所定义的模式模板。linux工具可以用它来过滤文本。 正则表达式利用通配符来描述数据流中第一个或多个字符。 正则表达式模式含有文本或特殊字符,为sed编辑器和gawk程序定义了一个匹配数据时采用的模板。 20.1.2 正则表达式的类型 使用正则表达式最大的问题在于有不止一种类型的正则表达式。 正则表达式是通过正则表达式引擎实现的,正则表达式引擎是一套底层软件,负责解释正则表达式模式并使用这些模式进行文本匹配。 在linux中有两种流行的正则表达式
xcywt
2018/01/11
1.2K0
Shell 正则表达式
正则表达式是用于描述字符排列和匹配模式的一种语法规则。 它主要用于字符串的模式分割、匹配、查找以及替换操作。
小小工匠
2021/08/16
1.1K0
Linux篇---Grep和正则匹配
\                  转义字符 .                      匹配任意单个字符 [1249a],[^12],[a-k]  字符序列单字符占位 ^                 行首 $                  行尾 \<,\>:\<abc           单词首尾边界 |                   连接操作符 (,)              选择操作符 \n             反向引用
LhWorld哥陪你聊算法
2018/09/13
5.6K0
Linux篇---Grep和正则匹配
Linux系统开发: linux下正则表达式
现在学的是Linux中的正则表达式,最常应用正则表达式的命令是linux三剑客:grep(egrep),sed,awk。
DS小龙哥
2022/01/27
1.4K0
Linux系统开发: linux下正则表达式
sed入门详解教程 原
    sed 是一个比较古老的,功能十分强大的用于文本处理的流编辑器,加上正则表达式的支持,可以进行大量的复杂的文本编辑操作。sed 本身是一个非常复杂的工具,有专门的书籍讲解 sed 的具体用法,但是个人觉得没有必要去学习它的每个细节,那样没有特别大的实际意义。网上也有很多关于 sed 的教程,我也是抱着学习的心态来学习 sed 的常见的用法,并进行系统的总结,内容基本覆盖了 sed 的大部分的知识点。文中的内容比较简练,加以实际示例来帮助去理解 sed 的使用。
拓荒者
2019/03/11
1.5K0
sed入门详解教程
                                                                            原
正则表达式详解
正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题。
黄规速
2022/06/30
1.4K0
正则表达式详解
sed 命令+正则表达式
sed是一个非交互性性文本编辑器, 它编辑文件或标准输入导出的文件拷贝。标准输入可能是来自键盘、文件重定向、字符串或变量,或者是一个管道文件。sed可以随意编辑小或大的文件,有许多 sed命令用来编辑、删除,并允许做这项工作时不在现场。sed一次性处理所有改变,因而变得很有效,对用户来说,最重要的是节省了时间。sed必须通过行号和正则表达式指定要改变的文本行
一见
2018/08/07
3.4K0
强烈推荐!Python 这个宝藏库 re 正则匹配
Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作。
Wu_Candy
2022/07/05
1.5K0
正则表达式
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
ppxai
2020/09/23
8780
[Linux]正则表达式和grep使用
可以看以前的博客[Regex]Get正则表达式:https://blog.csdn.net/humanking7/article/details/51175937
祥知道
2020/03/10
1.6K0
JavaScript(RegExp正则匹配)
正则表达式是一个描述字符模式的对象。JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法。
aehyok
2018/09/11
4.3K0
正则表达式详解
正则表达式(regular expression)是一种表达文本模式(即字符串结构)的方法,有点像字符串的模板,常常用来按照“给定模式”匹配文本。比如,正则表达式给出一个 Email 地址的模式,然后用它来确定一个字符串是否为 Email 地址。JavaScript 的正则表达式体系是参照 Perl 5 建立的。
IT人一直在路上
2019/09/16
1.1K0
awk(报告生成器),grep(文本过滤器),sed(流编辑器)使用入门
三剑客 linux下的文本三剑客 grep egrep,grep,fgrep 文本查找的需要 grep:根据模式搜索文本,并将符合模式的文本行显示出来。 pattern:文本符和正则表达式的元字符组合而成的匹配条件 grep [option] "pattern" file grep root /etc/passwd -i:忽略大小写 --color:匹配的字符高亮显示 alias alias grep='grep --color' -v:反向查找 -o:只显示被模式匹配的字符串(不显示行
若与
2018/04/25
1.3K0
awk(报告生成器),grep(文本过滤器),sed(流编辑器)使用入门
《前端运维》一、Linux基础--08Shell其他及补充
 要注意的是,有些命令不支持正则模式,比如fs、find等,有些是支持正则的,比如grep、awk、sed等。正则的语法和js中的正则几乎没有区别,下面仅简单罗列下常用的正则:
zaking
2022/05/10
7000
《前端运维》一、Linux基础--08Shell其他及补充
linux基础命令介绍十:文本流编辑 sed
与vim不同,sed是一种非交互式的文本编辑器,同时它又是面向字符流的,每行数据经过sed处理后输出。
用户5030870
2019/04/10
1.1K0
js正则表达式转义字符-4.   正则表达式的使用
  2. 特点:灵活、逻辑性非常强、以非常简单的方式对字符串进行复杂的控制 3. 创建正则表达式
宜轩
2022/12/26
1.6K0
PHP正则表达式_python正则匹配字母
2、匹配函数    preg_match(’/php/’,php)   参数1 模式   参数2 字符串
全栈程序员站长
2022/11/19
2.7K0
Sed三剑客入门与进阶
描述:功能强大的流式文本编辑器(流编辑器-Stream editor)进行文本过滤与格式化替换输出,是在进行文本处理中非常实用的工具,能够完美的配合正则表达式使用;
全栈工程师修炼指南
2022/09/28
3.1K0
Sed三剑客入门与进阶
正则三剑客-grep
先来普及一下基础知识! ^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。 $ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。 . 匹配一个非换行符的任意一个字符,如:/s.d/匹配s
老七Linux
2018/05/09
6970
Linux通配符和正则表达式通配符 区别_linux正则表达式语法
通配符是shell在做PathnameExpansion时用到的。说白了一般只用于文件名匹配,它是由shell解析的,比如find,ls,cp,mv等。
全栈程序员站长
2022/10/02
5.1K0
Linux通配符和正则表达式通配符 区别_linux正则表达式语法
相关推荐
《Linux命令行与shell脚本编程大全》第二十章 正则表达式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验