sed匹配数字的疑惑,该怎么处理
答案:2 悬赏:80 手机版
解决时间 2021-02-19 17:41
- 提问者网友:却不属于对方
- 2021-02-18 19:46
sed匹配数字的疑惑,该怎么处理
最佳答案
- 五星知识达人网友:佘樂
- 2021-02-18 21:09
志文件中其中一行内容为:abc135hello
想使用正则找到这一样,分别使用命令egrep和sed。
问题1:数字匹配上\d是用来匹配数字的,使用\d+匹配不到135,但是必须用[0-9]才可以
问题2:egrep命令使用[0-9]+正则可以匹配到135,sed命令却不行
[root@livedvd log]# egrep "abcd[0-9]+hello" tmp.txt
abcd135hello
[root@livedvd log]# egrep "abcd\d+hello" tmp.txt
[root@livedvd log]# sed -n '/abcd[0-9]+hello/p' tmp.txt
[root@livedvd log]# sed -n '/abcd\d+hello/p' tmp.txt
[root@livedvd log]#
后来尝试单独看看\d在sed中能匹配到什么,发现匹配到的是字母d而不是数字
[root@livedvd log]# sed -n 's/\d/AAAAAAAAAAAA/p' tmp.txt
abcAAAAAAAAAAAA135hello
[root@livedvd log]#
想使用正则找到这一样,分别使用命令egrep和sed。
问题1:数字匹配上\d是用来匹配数字的,使用\d+匹配不到135,但是必须用[0-9]才可以
问题2:egrep命令使用[0-9]+正则可以匹配到135,sed命令却不行
[root@livedvd log]# egrep "abcd[0-9]+hello" tmp.txt
abcd135hello
[root@livedvd log]# egrep "abcd\d+hello" tmp.txt
[root@livedvd log]# sed -n '/abcd[0-9]+hello/p' tmp.txt
[root@livedvd log]# sed -n '/abcd\d+hello/p' tmp.txt
[root@livedvd log]#
后来尝试单独看看\d在sed中能匹配到什么,发现匹配到的是字母d而不是数字
[root@livedvd log]# sed -n 's/\d/AAAAAAAAAAAA/p' tmp.txt
abcAAAAAAAAAAAA135hello
[root@livedvd log]#
全部回答
- 1楼网友:有你哪都是故乡
- 2021-02-18 22:47
\(\)括起来的是捕获组,你可以在后面的替换中用\1 \2 之类的来调用
.表示任意一个字符
*表示*前面出现的那个字符重复0或任意次
你写8,第一个捕获组捕获0个字符,第二个捕获组捕获一个字符
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯