KarpovStas
27-11-2013, 18:46
Добрый день!
имеется скрипт для удаления дублирующих строк в txt файле
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace spicemustflow_sortcleaner
{
class Program
{
static string GetFilename(string nameWithoutExtension, bool uniq)
{
int n = 1;
string outputFile = string.Empty;
while (true)
{
outputFile = string.Format("{0}_{1}{2}.txt",
nameWithoutExtension, uniq ? "uniques" : "duplicates",
n > 1 ? n.ToString() : string.Empty);
if (File.Exists(outputFile)) n++;
else break;
}
return outputFile;
}
static void Main(string[] args)
{
string path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\";
string[] filelist = null;
if (args.Length == 0) filelist = Directory.GetFiles(path, "*.txt", SearchOption.TopDirectoryOnly);
else filelist = args;
foreach (string filename in filelist)
{
Encoding enc = Encoding.Default;
using (FileStream fs = File.OpenRead(filename))
{
byte[] data = new byte[3];
while (fs.Read(data, 0, data.Length) > 0)
if (data[0] == 0xef && data[1] == 0xbb && data[2] == 0xbf)
{
enc = Encoding.UTF8;
break;
}
else
{
enc = Encoding.GetEncoding(1251);
break;
}
}
Console.Write("loading {0}..\n", filename);
string[] input = File.ReadAllLines(filename, enc);
if (input.Length > 0)
{
Console.Write("sorting..\n");
Array.Sort(input);
List<string> uniques = new List<string>();
List<string> duplicates = new List<string>();
Console.Write("deleting duplicates..\n");
uniques.Add(input[0]);
for (int i = 1; i < input.Length; i++)
if (input[i] != input[i - 1])
uniques.Add(input[i]);
else
duplicates.Add(input[i]);
Console.Write("\nsaving..\n");
File.WriteAllLines(path + GetFilename(Path.GetFileNameWithoutExtension(filename), true), uniques.ToArray(), enc);
Console.Write("\n\n");
}
}
}
}
}
Нужно переделать так:
Есть два файла .txt
Файл1.txt :
11111@mail.ru
11231@mail.ru
1121@mail.ru
и т.д.
Файл2.txt :
55111@mail.ru
55231@mail.ru
5521@mail.ru
11111@mail.ru
и т.д.
Так вот нужна, чтобы из первого файла автоматически удалить дубликаты содержащиеся во втором текстовом файле (в данном случае в двух файлах есть строка 11111@mail.ru из первого файла данная строка должна удалится).
сколько это будет стоит?
имеется скрипт для удаления дублирующих строк в txt файле
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace spicemustflow_sortcleaner
{
class Program
{
static string GetFilename(string nameWithoutExtension, bool uniq)
{
int n = 1;
string outputFile = string.Empty;
while (true)
{
outputFile = string.Format("{0}_{1}{2}.txt",
nameWithoutExtension, uniq ? "uniques" : "duplicates",
n > 1 ? n.ToString() : string.Empty);
if (File.Exists(outputFile)) n++;
else break;
}
return outputFile;
}
static void Main(string[] args)
{
string path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\";
string[] filelist = null;
if (args.Length == 0) filelist = Directory.GetFiles(path, "*.txt", SearchOption.TopDirectoryOnly);
else filelist = args;
foreach (string filename in filelist)
{
Encoding enc = Encoding.Default;
using (FileStream fs = File.OpenRead(filename))
{
byte[] data = new byte[3];
while (fs.Read(data, 0, data.Length) > 0)
if (data[0] == 0xef && data[1] == 0xbb && data[2] == 0xbf)
{
enc = Encoding.UTF8;
break;
}
else
{
enc = Encoding.GetEncoding(1251);
break;
}
}
Console.Write("loading {0}..\n", filename);
string[] input = File.ReadAllLines(filename, enc);
if (input.Length > 0)
{
Console.Write("sorting..\n");
Array.Sort(input);
List<string> uniques = new List<string>();
List<string> duplicates = new List<string>();
Console.Write("deleting duplicates..\n");
uniques.Add(input[0]);
for (int i = 1; i < input.Length; i++)
if (input[i] != input[i - 1])
uniques.Add(input[i]);
else
duplicates.Add(input[i]);
Console.Write("\nsaving..\n");
File.WriteAllLines(path + GetFilename(Path.GetFileNameWithoutExtension(filename), true), uniques.ToArray(), enc);
Console.Write("\n\n");
}
}
}
}
}
Нужно переделать так:
Есть два файла .txt
Файл1.txt :
11111@mail.ru
11231@mail.ru
1121@mail.ru
и т.д.
Файл2.txt :
55111@mail.ru
55231@mail.ru
5521@mail.ru
11111@mail.ru
и т.д.
Так вот нужна, чтобы из первого файла автоматически удалить дубликаты содержащиеся во втором текстовом файле (в данном случае в двух файлах есть строка 11111@mail.ru из первого файла данная строка должна удалится).
сколько это будет стоит?