前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sed中的正则匹配

sed中的正则匹配

作者头像
生信编程日常
发布2020-06-29 15:54:36
6.3K0
发布2020-06-29 15:54:36
举报

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

1. 行首/行尾

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

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

代码语言:javascript
复制
sed 's/^Potri.//g' test.txt 

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

代码语言:javascript
复制
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
复制
echo -e "Cat\nBat\nHat" | sed -n '/[CH]at/ p'

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

4. 不在列表中的任意字符
代码语言:javascript
复制
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
复制
echo -e "Cat\nBat\nHat" | gsed -n '/\(C\|B\|H\)at/p'
7. 特殊字符转义

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

8. 例子

匹配上海市电话号码:

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

匹配ip地址:

代码语言:javascript
复制
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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 行首/行尾
  • 2. 匹配字符
  • 3. 匹配在列表中的任意字符
  • 4. 不在列表中的任意字符
  • 5. 匹配出现某种次数(+; * ; ?; {n}; {n,}; {m,n})
  • 6. 或者
  • 7. 特殊字符转义
  • 8. 例子
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档