Chinaunix

标题: sed的地址匹配 [打印本页]

作者: mwl940602    时间: 2017-08-17 00:46
标题: sed的地址匹配
本帖最后由 mwl940602 于 2017-08-17 09:31 编辑

n,m匹配的是从第n行到m行,n,~m匹配的是n到第一个行号是m倍数之间的行,但是我测试的时候发现两个的输出是一样的,不同之处到底在哪,或者说具体用在什么地方会有差别:
有如下文件:
[root@server shell]# cat a.txt
1
2
3
...
100
-------------------------------------------------
[root@server shell]# sed -n '1,5p' a.txt
1
2
3
4
5
-------------------------------------------------
[root@server shell]# sed -n '1,~5p' a.txt
1
2
3
4
5

-------------------------------------------------
我查资料弄清楚了,谢谢各位了:
n,m:
n<m时,匹配n到m行
n>m时,只匹配第n行

n,~m:
n>m时,匹配从n开始,到下一行是m的倍数的行
例:
$ seq 10 |sed '5,~3p'
5
6

n<m,匹配从n到m的行
$ seq 10 | sed '3,~5p'
3
4
5
作者: jason680    时间: 2017-08-17 00:57
回复 1# mwl940602


$ seq 20 | sed -n '2~5p'
2
7
12
17

#Note: 2, 2+5*1, 2+5*2, ..., 2+5*N



$ seq 20 | sed -n '2~4p'
2
6
10
14
18

#Note 2, 2+4, 2+4*2, 2+4*3, ..., 2+4*N

作者: mwl940602    时间: 2017-08-17 01:03
jason680 发表于 2017-08-17 00:57
回复 1# mwl940602

您好,我问得是"n,~m"和"n,m"的区别

作者: jason680    时间: 2017-08-17 10:53
回复 3# mwl940602

>> ...我问得是"n,~m"和"n,m"的区别

按你问的来回帖
结果无区别...




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2