【发布时间】:2013-07-08 03:43:54
【问题描述】:
我有两个文件
一个.txt
1
2
3
B.txt
1
2
3
4
我想删除同时出现在 A.txt 和 B.txt 中的那些数据。
所以输出应该是:
C.txt
4
c++或linux机器如何做到这一点?
【问题讨论】:
-
sort a.txt b.txt |uniq -u -
解决了,非常感谢
我有两个文件
一个.txt
1
2
3
B.txt
1
2
3
4
我想删除同时出现在 A.txt 和 B.txt 中的那些数据。
所以输出应该是:
C.txt
4
c++或linux机器如何做到这一点?
【问题讨论】:
sort a.txt b.txt |uniq -u
您可以通过以下步骤将其存档:
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
【讨论】:
你可以用这个
comm -3 a.txt b.txt
-3 用于抑制出现在两个文件中的行。
【讨论】: