分页: 1 / 1
为什么sed -e '1,2d' -e '1,2d' 只删除3行,而不是4行?
发表于 : 2011-06-26 19:07
由 imfinger
代码: 全选
[root@station198 ~]# echo '1
2
3
4
5
6 ' | sed -e '1,2d' -e '1,2d'
4
5
6
[root@station198 ~]#
为什么只删除1,2,3行?
Re: 为什么sed -e '1,2d' -e '1,2d' 只删除3行,而不是4行?
发表于 : 2011-06-26 19:15
由 sk1418
Re: 为什么sed -e '1,2d' -e '1,2d' 只删除3行,而不是4行?
发表于 : 2011-06-26 19:30
由 imfinger
Re: 为什么sed -e '1,2d' -e '1,2d' 只删除3行,而不是4行?
发表于 : 2011-06-26 22:01
由 fnan
个人觉得根源是如何解读sed的问题:
先设一文件:kose5@kose5-Aspire-4552:~$ cat 1
1
2
3
4
5
6
看起来“正常”情况:
kose5@kose5-Aspire-4552:~$ sed -e '1,2d' -e '2d' 1
3
4
5
6
通常会这样解读: (-e ‘1,2d’ -e ‘2’ )删除第一行到第二行, 再删除第二行。
从结果看很不错。
看起来“不正常”情况:
kose5@kose5-Aspire-4552:~$ sed -e '1,2d' -e '1,2d' 1
4
5
6
通常会这样解读: (-e ‘1,2d’ -e ‘1,2’ )删除第一行到第二行, 再删除第一行到第二行。
从结果看不对,第三行被删除了!
如果这样解读呢? (-e ‘1,2d’ -e ‘1,2’ )从第一行起删除至少执行一次,直到超过第二行停止,再从第一行起删除至少执行一次,直到到超过第二行停止。
有关 line,/pattern/d:
kose5@kose5-Aspire-4552:~$ sed -e '3d' -e '3,/3/d' 1
1
2
我这样解读: 删除第三行,再从从第三行起删除至少执行一次,直到匹配/3/的行。
有错误的话,还请指教。
Re: 为什么sed -e '1,2d' -e '1,2d' 只删除3行,而不是4行?
发表于 : 2011-06-26 22:07
由 fnan
imfinger 的头像跟那个帖子的lionfun头像一样呢,是同个人吗?
Re: 为什么sed -e '1,2d' -e '1,2d' 只删除3行,而不是4行?
发表于 : 2011-07-02 16:52
由 imfinger
fnan 写了:imfinger 的头像跟那个帖子的lionfun头像一样呢,是同个人吗?
是

Re: 为什么sed -e '1,2d' -e '1,2d' 只删除3行,而不是4行?
发表于 : 2011-07-02 17:26
由 c43035