Chinaunix首页 | 论坛 | 博客
  • 博客访问: 693764
  • 博文数量: 33
  • 博客积分: 10032
  • 博客等级: 上将
  • 技术积分: 1383
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-22 18:53
文章分类

全部博文(33)

文章存档

2011年(4)

2010年(10)

2009年(14)

2008年(5)

我的朋友

分类: Python/Ruby

2010-03-16 13:46:16

用col -b过滤出来的man page有太多的空行,打印出来浪费纸张,写个python脚本过滤一下多余的空行。

#!/usr/bin/python

import os
import re
import sys

argv1 = sys.argv[1]
cmd = 'man ' + argv1 + ' | col -b'

man = os.popen(cmd)

m = re.sub('\n{3,}', '\n\n', man.read())

n = argv1 + '.txt'
f = open(n, 'w')
f.write(m)
f.close
阅读(1161) | 评论(5) | 转发(0) |
给主人留下些什么吧!~~

mishuang2010-04-23 20:20:49

man sed | col -b | uniq

mishuang2010-04-23 14:48:09

最简单的表达式是man sed | col -b | cat -s # Delete all CONSECUTIVE blank lines from file except the first. # This method also deletes all blank lines from top and end of file. # (emulates "cat -s") sed '/./,/^$/!d' file # this allows 0 blanks at top, 1 at EOF sed '/^$/N;/\n$/D' file # this allows 1 blank at top, 0 at EOF http://sed.sourceforge.net/grabbag/tutorials/sedfaq.txt

mishuang2010-03-23 10:45:08

我仔细研究了一下你的表达式 man page | col -b | sed '/^$/{N;/^\n$/D}' 用正则表达式的话应该可以这样理解 #!/usr/bin/python import re f = open('sed.txt') m = re.sub('(?<=\n)\n(?=\n)', '', f.read()) print m 如果当前匹配行(空行)的下一行是空行,则将这个空行删掉。 看来用正则表达式可以以不变应万变了。

mishuang2010-03-23 09:23:21

多谢指教:) 不过我觉得学习一门语言,最好的方法就是写些小程序自娱一下,一方面方便了工作,另一方面也加深了印象。sed应该是有这种功能的,只是不知从何查起,以后还请多多指教。

chinaunix网友2010-03-22 13:15:39

杀鸡焉用牛刀? man page | col -b | sed '/^$/{N;/^\n$/D}' 再说就算要搬出 python,这个脚本也该只处理字符流啊,把执行 man,col 加里面干什么。Unix 哲学:每样东西做好它自己该作的就行了