同步文件,删除相同的数据

时间:2013-07-08 03:43:55

标签: c++ linux file sync



我有两个文件
A.TXT

  

1
2
3

B.txt

  

1
2
3
4

我想删除A.txt和B.txt中出现的那些数据 所以输出应该是:
C.txt

  

4

如何通过c ++或linux机器执行此操作?

2 个答案:

答案 0 :(得分:1)

您可以通过以下步骤对此进行归档:

1加载A.txt int setA

std::set<std::string> setA;

2将B.txt加载到setB

std::set<std::string> setB;

3获取setA和setB与setC

的交互
setC = set_intersection(setA.begin(), setA.end(),
                        setB.begin(), setB.end(),
                        setC);

4摆脱setA中的常见数据

std::set<std::string> setDA;
set_difference(setA.begin(), setA.end(),
               setC.begin(), setC.end(),
               setDA);

// write content of setDA back to file A

5为setB做同样的事情并写回文件B

答案 1 :(得分:1)

你可以用这个

comm -3 a.txt b.txt

-3用于抑制两个文件中出现的行。