有什么好方法批量处理文本中的信息?

2014-12-26 21:02:11 +08:00
 Mizzi

比如批量命名、删除替换其中信息、每行分割成新的文件等等

2453 次点击
所在节点    问与答
17 条回复
Shared
2014-12-26 21:09:56 +08:00
我不会向你推荐 awk, sed, grep, find 和 xargs 的
Mizzi
2014-12-26 21:41:37 +08:00
@Shared 想实现每行创建一个新文件,以此行前5位字符命名,有什么方法吗?
frankzeng
2014-12-26 21:51:36 +08:00
python可满足你的要求
huson
2014-12-26 22:24:38 +08:00
python +1
Tink
2014-12-26 22:34:31 +08:00
sed
Tomilay
2014-12-26 22:34:50 +08:00
Perl
lululau
2014-12-26 22:43:48 +08:00
简单的 sed/awk,复杂的 Perl
Shared
2014-12-27 01:46:37 +08:00
@Mizzi awk '{ system("touch "substr($0, 0, 5)".txt") }' input.txt
Shared
2014-12-27 01:56:27 +08:00
@Mizzi 上面好多人推荐 Python,那来个 Python 一行的:

[open(line[:5] + ".txt", 'a') for line in open("input.txt", 'r').readlines()]
wilsonxyz
2014-12-27 02:02:43 +08:00
@Shared 几千万条的数据也可以这样子打开吗?
Shared
2014-12-27 02:06:47 +08:00
@wilsonxyz 请不要讲极端情况,极端情况有别的处理方法
Shared
2014-12-27 02:07:33 +08:00
@wilsonxyz 另外,awk 的方案对行数无要求
wilsonxyz
2014-12-27 02:09:01 +08:00
@Shared 我不谈极端情况,我只是请教。
dofine
2014-12-27 08:54:38 +08:00
awk sed 一般都能满足要求啦
python 更好写也容易懂一点
个人感觉
vivisidea
2014-12-27 09:23:23 +08:00
@Shared 文件对象本身可以迭代的,.readlines()应该是可以去掉的

@wilsonxyz 千万条数据的情况,我觉得是可以这么处理的,慢慢建就行了阿,首先文件系统里创建千万个文件要能撑住
Mizzi
2014-12-27 11:38:41 +08:00
@Shared 学到了,感谢大神,另外向上面说的,如果是无上限的数据也可如此处理不会有问题吗?
Shared
2014-12-27 13:55:22 +08:00
@vivisidea 好的,学到了。


@Mizzi 你需要考虑的是 IO 性能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/156983

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX