LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1054|回复: 5

txt文档加空行[求助]

[复制链接]
发表于 2010-10-17 19:35:48 | 显示全部楼层 |阅读模式
我有几个txt文档小说,我想把段与段之加都加一个空行,这个用什么软件能做到?

另外,如果有多空行的,如何把多余的空行去掉?

谢谢!
发表于 2010-10-17 19:47:27 | 显示全部楼层
用一些命令就能实现,首先是设置一行有多少个字符,然后判断哪一行的字符数少于这个数字,就在其后插入一个空行,这就能实现段间空行;

至于去掉多余空行,属于合并空行,直接数\n的个数,直到下一个字符不是\n,如果超过2个,那么就有多余空行,删除即可。

很多命令都能实现,楼主用Google搜一下,然后写过脚本就行了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-10-17 19:54:17 | 显示全部楼层
哦,这样啊,我搜到的都是Windows下的,我不知道能不能在Linux下用呢呵。

谢谢你了!

我刚刚用gedit查找替换,先把\n替换成\n\n,再把\n\n\n替换成\n\n,基本上把所有段落之间都加了一个空行。这个方法比较笨,而且多空行的还是无法变成一个空行。我再找找吧呵。
回复 支持 反对

使用道具 举报

发表于 2010-10-19 13:40:56 | 显示全部楼层
vim

g/^\n$/d
回复 支持 反对

使用道具 举报

发表于 2010-10-19 17:00:45 | 显示全部楼层
只要支持正则表达式的都行, 比如 vim:
  1. :1,$-1s/\n\+/\r\r/
复制代码
回复 支持 反对

使用道具 举报

发表于 2010-10-19 18:34:37 | 显示全部楼层

  1. #!/usr/bin/python
  2. # vim:ts=8:sw=4:expandtab:encoding=utf-8
  3. """
  4. Add an empty line between paragraphs.

  5. Released under GPL v3 or later.
  6. """

  7. __version__ = "0.1"
  8. import sys
  9. import os
  10. import optparse

  11. NATIVE=sys.getfilesystemencoding()

  12. def fen_duan(fname, options):
  13.     print 'Fixing "%s"...' % fname
  14.     parts = os.path.splitext(fname)
  15.     newname = '%s-fenduan%s' % parts # output file name

  16.     fdin = open(fname, 'rU')
  17.     fdout = open(newname, 'w')
  18.     last_line_space=0
  19.     for line in fdin:
  20.         if line.isspace():
  21.             # remove extra empty lines
  22.             last_line_space += 1
  23.             if last_line_space <= 1:
  24.                 fdout.write(line)
  25.             continue
  26.         else:
  27.             last_line_space = 0

  28.         fdout.write(line)
  29.         # Append new line to short lines
  30.         # use gb18030 to find line length.
  31.         uline = line.decode(options.encoding, 'replace').encode('gb18030')
  32.         if len(uline) < options.line_length:
  33.             # Find new line char: \n, \r\n, \r
  34.             nl = fdin.newlines or '\n'
  35.             if isinstance(nl, tuple):
  36.                 nl = nl[0]
  37.             fdout.write(nl)
  38.             last_line_space += 1
  39.     fdin.close()
  40.     fdout.close()
  41.     print 'Save as "%s"' % newname

  42. def main():
  43.     LINELEN = 78
  44.     parser = optparse.OptionParser(version=__version__)
  45.     parser.add_option('-e', '--encoding', action='store',
  46.             help="text encoding [%s]" % NATIVE)
  47.     parser.add_option('-l', '--line-length', action='store', type=int,
  48.             help="minimum characters per line [%i]" % LINELEN)
  49.     parser.set_defaults(encoding=NATIVE, line_length=LINELEN)
  50.     options, fnames = parser.parse_args()
  51.     #print options
  52.     if not fnames:
  53.         parser.print_help()

  54.     for f in fnames:
  55.         fen_duan(f, options)

  56. if __name__ == '__main__':
  57.     main()

复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表