说我有2个文本文件:Ç - 合并两个文本文件
A.TXT:
Param1: Value1
Param2: Value2
.
.
.
.
ParamM: ValueM
B.txt
Param1: Value1
Param2: Value2
.
.
.
.
ParamN: ValueN
- 参数的数量在A.txt,即M可以大于,小于或等于B.txt中的参数的数量,即N。
- A.txt和B.txt中相同参数的值不必相同。
- 中号和Ñ大概可以达到200
- 参数名是任意的最大值。他们没有号码。以上只是为了举例说明。
我的目标是要合并A.TXT和B.txt。如果发生任何冲突,我有一个文件/内存中的存储区,指定哪一个优先。
例如,
A.TXT可能看起来像:
Path: C:\Program\Files
Data: ImportantInfo.dat
Version: 1.2.3
Useless: UselessParameter.txt
和
B.txt可能看起来像:
Path: C:\ProgramFiles
Data: NotSoImportant.dat
Version: 1.0.0
Useful: UsefulParameter.txt
最后文本文件 应该是这样的:
Path: C:\ProgramFiles
Data: ImportantInfo.dat
Version: 1.2.3
Useful: UsefulParameter.txt
现在我的方式来思考是这样的:
get a line from A.txt
get a line from B.txt
tokenize both by ":"
compare param names
if same
write A.txt's value to Result.txt
else if different
write A.txt's line into Result.txt
write B.txt's line into Result.txt /* Order doesn't really matter */
repeat above steps until end of both text files
这种方法不照顾时A.TXT具有一定的参数和B.txt的没有。如果存在一些轻量级的库/ API来执行此操作将非常有帮助。我不在寻找命令行工具(感谢做system()
调用的开销)。
谢谢!
为什么不使用BeyondCompare? – 2013-02-19 08:52:27
为什么文件'A.txt'的'Useless'行不出现最终结果? – 2013-02-19 08:58:27
这对于具有Map datatyp的语言来说会容易得多: 1.读取所有B并存储在Map中。 2.读取所有A并存储在相同的地图中(自动替换任何重复项) 3.将地图输出到文件。 – 2013-02-19 09:00:20