想要一个处理txt文档的工具或者办法

2012-07-11 13:14:53 +08:00
 cjjia
比如我有1.txt和2.txt两个文档,他们的内容都是一行一行的,有上万行。

现在我要把1.txt和2.txt进行对比,如果1.txt里面存在192.168.0.1这一行,就搜索2.txt里面存不存在192.168.0.1这一行,如果存在则将其删除。

就是说把所以1.txt里面存在的内容,将其在2.txt里面删除。

不知道有没有现成的工具,或者其他软件能曲线实现这个功能,谢谢了。
3617 次点击
所在节点    问与答
13 条回复
cosbeta
2012-07-11 13:18:13 +08:00
<?php
$a = file( "1.txt" );
$b = file_get_contents("2.txt");
foreach( $a as $line){

$line = trim($line);
if( strlen( $line) <1) continue;
if( substr_count($b,$line) >0) $b = str_replace($line,"",$b);

}?>

php代码如上,哈哈,程序没考虑效率,如果文件很大,就会很消耗内存
lululau
2012-07-11 13:27:34 +08:00
grep -vFf 1.txt 2.txt
cjjia
2012-07-11 13:47:14 +08:00
@cosbeta 不知道这个怎么用,是把上面的代码放到index.php文档里面,然后上传到php空间吗?然后把1.txt和2.txt上传到同一目录?

在浏览器打开之后没显示什么,然后下载回来1.txt和2.txt看了一下里面内容没变,是不是服务器缺少什么函数?

可以加下QQ吗? 如果你帮我解决了 可以适当的付些报酬给你
cosbeta
2012-07-11 13:56:32 +08:00
你把两个文件email给我就是 china.cos 在gmaill
@lululau 的方法匹配太泛了,会误删的呢
cosbeta
2012-07-11 13:58:53 +08:00
首先,1.txt和2.txt的权限要对,然后 和php放在同一个目录。 直接运行 php tool.php 假设php文件名是tool.php
reus
2012-07-11 14:05:43 +08:00
sort 2.txt 1.txt 1.txt | uniq -u
forsaken
2012-07-11 14:08:18 +08:00
只能是开发语言来实现,比如php或者ruby或者C吧。软件貌似很少。
shiny
2012-07-11 14:18:47 +08:00
<?php
$a = explode("\n",file_get_contents("1.txt"));
$b = explode("\n",file_get_contents("2.txt"));
$c = array_diff($b,$a);
file_put_contents("3.txt",implode("\n",$c));
ospider
2012-07-11 14:24:11 +08:00
#!/usr/bin/env python
#coding:utf-8

file_a = open('1.txt', 'r').readlines()
file_b = open('2.txt', 'r').readlines()
new_b = [lb for lb in file_b if lb not in file_a]#遍历2中每一行,看是否在1中存在
with open('new_2.txt', 'w') as new_file:
for l in new_b:
new_file.write(l)
bullda
2012-07-11 16:34:29 +08:00
beyond compare?
cjjia
2012-07-11 17:16:40 +08:00
@shiny 谢谢,真的很感谢。代码能用
HowardMei
2012-07-11 17:33:55 +08:00
文件所在目录terminal输入:
awk ' !x[$0]++' 1.txt 2.txt | split -l $(awk 'END { print NR }' 1.txt)
得到两个新文件,其中一个就是去重后的2.txt
从服务器bash_proile中拿来的,会用awk的同学应该很容易理解。
cosbeta
2012-07-11 17:38:45 +08:00
@HowardMei awk确实是最方便的

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

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

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

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

© 2021 V2EX