Chinaunix

标题: 用sed如何删除2至10行与aaa匹配的行? [打印本页]

作者: swysn    时间: 2003-02-20 22:54
标题: 用sed如何删除2至10行与aaa匹配的行?
???
作者: laoxia    时间: 2003-02-21 01:12
标题: 用sed如何删除2至10行与aaa匹配的行?
  1. sed -n '2,10p' filename | sed '/aaa/d'
复制代码

作者: didikei    时间: 2003-02-21 08:34
标题: 用sed如何删除2至10行与aaa匹配的行?
sed -n '2,10p' filename | sed '/aaa/d' 有问题
作者: laoxia    时间: 2003-02-21 08:37
标题: 用sed如何删除2至10行与aaa匹配的行?
solaris 7, Ksh ,  no problem.
作者: carrierye    时间: 2003-02-21 08:40
标题: 用sed如何删除2至10行与aaa匹配的行?
应该没有问题。
我试过了。
不妨你再试一下这个。
sed -n '2,10p' filename | sed -e '/aaa/d'
作者: miling    时间: 2003-02-21 08:47
标题: 用sed如何删除2至10行与aaa匹配的行?
人家要的是删除2-10行含有aaa内容后剩下的内容,2-10以外含不含有aaa则无所谓。
而你的命令却是保留了2-10行不含aaa的内容,其他行都没显示出来,当然不行啦。
作者: miling    时间: 2003-02-21 08:53
标题: 用sed如何删除2至10行与aaa匹配的行?
试一试:

awk '{++n; if(n>=2 &amp;&amp; n<=10){if($0 ~ /aaa/)next; else print $0;}else print $0;}' filename
作者: laoxia    时间: 2003-02-21 09:12
标题: 用sed如何删除2至10行与aaa匹配的行?

作者: laoxia    时间: 2003-02-21 09:13
标题: 用sed如何删除2至10行与aaa匹配的行?
谢英雄指正,改一下

  1. sed -n '1p' filename; sed -n '2,10p' filename | sed '/aaa/d' ; sed -n '10,$p' filename
复制代码

作者: laoxia    时间: 2003-02-21 09:37
标题: 用sed如何删除2至10行与aaa匹配的行?
miling的在逻辑上比较巧妙,属技巧型
俺是力量型打法
作者: 红袖添香    时间: 2003-02-21 15:49
标题: 用sed如何删除2至10行与aaa匹配的行?
...

原帖由 "laoxia" 发表:

谢英雄指正,改一下

sed -n '1p' filename; sed -n '2,10p' filename | sed '/aaa/d' ; sed -n '10,$p' filename


laoxia 喜欢衣服反着穿,呵呵。


  1. sed '2,10 {
  2. /aaa/d
  3. }' filename
复制代码


就可以了
作者: swysn    时间: 2003-02-21 16:39
标题: 用sed如何删除2至10行与aaa匹配的行?
原帖由 "红袖添香" 发表:

就可以了


佩服!!!!!!!!!!!!!!!!
作者: swysn    时间: 2003-02-21 16:47
标题: 用sed如何删除2至10行与aaa匹配的行?
红袖添香
不能实现阿
作者: 红袖添香    时间: 2003-02-21 16:56
标题: 用sed如何删除2至10行与aaa匹配的行?
原帖由 "swysn" 发表:
红袖添香
不能实现阿


不应该吧,我在OpenBSD下测试过的。

你是什么系统?也许 sed 版本不一样?
作者: 红袖添香    时间: 2003-02-21 17:10
标题: 用sed如何删除2至10行与aaa匹配的行?
原帖由 "红袖添香"][quote:d5eec14ee5="swysn" 发表:
红袖添香
不能实现阿


不应该吧,我在OpenBSD下测试过的。

你是什么系统?也许 sed 版本不一样?[/quote]

      ...
      ters in the file are `#n', the default output is suppressed.
      This is the same as specifying the -n option on the command line.

   The sed utility exits 0 on success or >0 if an error occurred.

SEE ALSO
   awk(1), ed(1), grep(1), regex(3), re_format(7)

STANDARDS
   The sed function is expected to be a superset of the IEEE Std1003.2
   (``POSIX.2'') specification.

HISTORY
   A sed command appeared in Version 7 AT&amp;T UNIX.

OpenBSD 3.1          December 30, 1993              5


我的 man page 上说是 POSIX.2 标准的,不是特殊的呀~  >_<
作者: swysn    时间: 2003-02-21 21:23
标题: 用sed如何删除2至10行与aaa匹配的行?
我试过好多次输出的是原来的内容,奇怪!
scounix5.0.5
作者: 红袖添香    时间: 2003-02-21 22:13
标题: 用sed如何删除2至10行与aaa匹配的行?
...


我又在 Solaris 和 IRIX 下试过了。都通过了。是不是你想达到的目的跟我们理解的不一样?

在 Solaris, IRIX, OpenBSD 下运行的结果:

原文件 filename:  

     1  aaa
     2  asdfasdf
     3  111
     4  aaa
     5  aaa
     6  ddddadfa
     7  asdfadsf
     8
     9  asdfasdf
    10
    11  dfdj
    12  afdfasdffad
    13  ad
    14  ddddfadf
    15  d
    16  adfasdfads
    17  asdfad
    18  adfad
    19  aaa
    20  adf

运行后  

     1  aaa
     2  asdfasdf
     3  111
     6  ddddadfa
     7  asdfadsf
     8
     9  asdfasdf
    10
    11  dfdj
    12  afdfasdffad
    13  ad
    14  ddddfadf
    15  d
    16  adfasdfads
    17  asdfad
    18  adfad
    19  aaa
    20  adf

其中 2-10 行中含有 aaa 的行,4,5 被删除了,其它则保留。1,10-20 都无影响。
作者: swysn    时间: 2003-02-22 00:27
标题: 用sed如何删除2至10行与aaa匹配的行?
是那样啊
奇怪,我运行了后输出的与原来的内容是一样的
作者: swysn    时间: 2003-02-22 15:30
标题: 用sed如何删除2至10行与aaa匹配的行?
狂晕!!!
重新启动后就可以了!
另:
为什么要大括号?中,小怎么不行?
作者: laoxia    时间: 2003-02-22 23:51
标题: 用sed如何删除2至10行与aaa匹配的行?
机器昨晚没喂
作者: laoxia    时间: 2003-02-23 03:38
标题: 用sed如何删除2至10行与aaa匹配的行?
原帖由 "红袖添香" 发表:

就可以了
这么有意思,刚发现写到一行还不行,一定要分三行写才行,真是倔强
作者: tiansgx    时间: 2003-02-23 11:51
标题: 用sed如何删除2至10行与aaa匹配的行?
[quote]原帖由 "laoxia"]这么有意思,刚发现写到一行还不行,一定要分三行写才行,真是倔强[/quote 发表:

两行就可以了
sed要求“}”必须单独作为一行得开头
也就是“{”可以和命令在同一行
作者: 红袖添香    时间: 2003-02-23 23:31
标题: 用sed如何删除2至10行与aaa匹配的行?
...

写成一行也可以的,不过得这样写:

sed -e '2,10 { /aaa/d' -e '}' filename

嫌麻烦,我还是愿意分行写

(另外,这时候的参数 -e 就是不可省略的了)
作者: muzx    时间: 2003-02-24 11:12
标题: 用sed如何删除2至10行与aaa匹配的行?
真有你的!大虾!

我给你作揖了!传两着吧!

请你在“红袖飘香”酒楼喝酒!
作者: swysn    时间: 2003-02-26 08:52
标题: 用sed如何删除2至10行与aaa匹配的行?
红袖添香
很很佩服你!!!!
作者: 华北帝鹰    时间: 2018-03-19 17:05
本帖最后由 华北帝鹰 于 2018-03-19 17:30 编辑

sed -i '2,10{/aaa/d}' file
作者: 华北帝鹰    时间: 2018-03-19 17:07
本帖最后由 华北帝鹰 于 2018-03-19 17:22 编辑

vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
作者: wh7211    时间: 2018-03-19 17:45
回复 1# swysn


  1. sed '2,10{/aaa/d}' file
复制代码





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