Chinaunix

标题: sed 文件奇数行显示疑问 [打印本页]

作者: computerzanz    时间: 2010-09-22 16:12
标题: sed 文件奇数行显示疑问
问题1:最后一行是奇数行如何显示?
  1. [dut@ubuntu-desktop ~/sed]$cat -n boot.ini
  2.      1        [boot loader]
  3.      2        timeout=30
  4.      3        default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
  5.      4        [operating systems]
  6.      5        multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home Edition" /noexecute=optin /fastdetect
复制代码
运行命令
  1. [dut@ubuntu-desktop ~/sed]$sed -n -e 'N;P' boot.ini
  2. [boot loader]
  3. default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
复制代码
问题2:删除多行空行,只保留1行,如下脚本为何不行?
  1. [dut@ubuntu-desktop ~/sed]$cat -n datafile
  2.      1        [boot loader]
  3.      2       
  4.      3        timeout=30
  5.      4       
  6.      5       
  7.      6        default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
  8.      7       
  9.      8       
  10.      9       
  11.     10        [operating systems]
  12.     11       
  13.     12        multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home Edition" /noexecute=optin /fastdetect
  14.     13        another line
复制代码
  1. [dut@ubuntu-desktop ~/sed]$sed -e '/^$/{
  2. > N
  3. > /^$/D
  4. > }' datafile
  5. [boot loader]

  6. timeout=30


  7. default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS



  8. [operating systems]

  9. multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home Edition" /noexecute=optin /fastdetect
  10. another line
复制代码
  1. [dut@ubuntu-desktop ~/sed]$sed --version
  2. GNU sed 版本 4.2.1
复制代码
希望帮助
作者: Shell_HAT    时间: 2010-09-22 16:15
  1. sed -n 'p;n' urfile
复制代码

作者: Shell_HAT    时间: 2010-09-22 16:20
代码从哪里抄的?少了点东西:
  1. sed '/^$/{N;/^\n$/D}' urfile
复制代码

作者: computerzanz    时间: 2010-09-22 16:43
代码从哪里抄的?少了点东西:
Shell_HAT 发表于 2010-09-22 16:20
  1. [dut@ubuntu-desktop ~/sed]$sed -e '/^$/{N;/^\n$/D}' datafile
  2. [boot loader]

  3. timeout=30


  4. default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS



  5. [operating systems]

  6. multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home Edition" /noexecute=optin /fastdetect
  7. another line
复制代码
还不好使....在sed+手册上看到的
作者: Shell_HAT    时间: 2010-09-22 16:49
回复 4# computerzanz


#cat urfile
1



2


3
#sed '/^$/{N;/^\n$/D}' urfile
1

2

3
#sed --version
GNU sed version 4.1.5

作者: computerzanz    时间: 2010-09-22 16:53
er,谢谢
作者: dragon23452345    时间: 2010-09-26 18:04
提示: 作者被禁止或删除 内容自动屏蔽




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