Chinaunix

标题: 请教如何快速删除空行 [打印本页]

作者: ukyo502    时间: 2006-08-18 15:03
标题: 请教如何快速删除空行
有个文件约上千行,每隔十行内容空一行,我现在想不要这些空的行了,有什么办法?
请指教!
作者: FinalBSD    时间: 2006-08-18 15:11
原帖由 ukyo502 于 2006-8-18 15:03 发表
有个文件约上千行,每隔十行内容空一行,我现在想不要这些空的行了,有什么办法?
请指教!

grep -v ^$
作者: waker    时间: 2006-08-18 15:33

  1. [waker@proxy dd3]$ awk 'BEGIN{for(i=0;i<=10000;i++)print i,(i%10)?"":"\n"}' >file
  2. [waker@proxy dd3]$ time tr -s '\n' <file >/dev/null

  3. real    0m0.028s
  4. user    0m0.002s
  5. sys     0m0.002s
  6. [waker@proxy dd3]$ time grep -v ^$ file >/dev/null

  7. real    0m0.270s
  8. user    0m0.152s
  9. sys     0m0.009s
  10. [waker@proxy dd3]$ time grep '.' file >/dev/null

  11. real    0m1.574s
  12. user    0m1.508s
  13. sys     0m0.026s

  14. [waker@proxy dd3]$ time sed '/^$/d' file >/dev/null

  15. real    0m0.048s
  16. user    0m0.042s
  17. sys     0m0.002s
  18. [waker@proxy dd3]$ time awk  '/./' file >/dev/null

  19. real    0m0.045s
  20. user    0m0.039s
  21. sys     0m0.003s
复制代码

为啥grep总是比较慢,和文件格式有关?

[ 本帖最后由 waker 于 2006-8-18 15:34 编辑 ]
作者: ukyo502    时间: 2006-08-18 15:44
感谢楼上的
原来要替换的是'.'这个点啊.
作者: woodie    时间: 2006-08-18 16:57
原帖由 waker 于 2006-8-18 15:33 发表
为啥grep总是比较慢,和文件格式有关?

这个应该和locale有关,GNU的grep在多字节的locale下速度很慢。试比较:
LANG=en grep pattern
LANG=C grep pattern
和:
LANG=zh_CN grep pattern
速度差距之大令人咋舌。^_^
几年前就有人问过我这个问题,当时没找到原因。这次waker兄又提起,好好google了下,终于找到了答案。^_^
所以,以后大家用GNU grep时建议加上LANG=C。
作者: waker    时间: 2006-08-18 17:12
果真,来让葱白一下
作者: wayy2008    时间: 2006-08-18 20:20
提示: 作者被禁止或删除 内容自动屏蔽




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