【发布时间】:2013-11-10 15:07:33
【问题描述】:
我有两个具有相似 ID 标签的相当大的 .txt 文件。我需要做的是从一个文件中获取 ID 标签,在另一个文件中进行匹配,然后将 ID 替换为第一个文件中的名称。我需要为 1000 多个标签完成此操作。关键是要完全匹配第一个文件中的部分 ID 标签名称并替换它。
每行都有一个唯一的 ID 标签,并且两个文件之间始终存在完全匹配(对于位置 [6-16] = "10737.G1C22");匹配分散,因此 File1.txt 中的第 1 行可能与 File2.txt 中的第 504 行匹配
两个文件中的行顺序不能排序,必须保持
例如:
File1.txt =
TYPE1_10737.G1C22 ---------
...
File2.txt =
10737.G1C22 ----------
我需要 File1.txt 中的名称,特别是“10737.G1C22”,以便在 File2.txt 中找到其完全匹配并将其替换为“TYPE1_10737.G1C22”。
然后编辑看起来像这样,现在 File2.txt 中的名称根据来自 File1.txt 的匹配项进行了更改:
File2.txt =
TYPE1_10737.G1C22 ---------
...
我尝试了一些 sed 功能,但都卡住了。重要的是,一旦找到完全匹配的名称,只有名称的前 6 个字符会被更改,而不是其他任何字符。有超过 1000 多个 ID 标签需要匹配和更改。
我正在考虑告诉它精确匹配位置 [6-16] 并将其替换为 File1.txt 中的 [0-16] 的代码。
非常感谢任何帮助。这甚至可能吗?我也愿意接受其他建议。谢谢你。
【问题讨论】:
-
每行一个ID,总是在每个文件的行首?对于每个 file2 ID,file1 中最多有一个匹配项吗?
-
是的。每行一个 ID,是的,文件之间至少有一个匹配项。谢谢!
-
一种方法是从 file1 生成一个字典(我看到你的 python 标签),其中键是要在 file2 中找到的匹配项,字典值是全名。然后读取file2,在字典中查找,并将行重写为一个新文件。
-
file2 中的行顺序重要吗?即它和file1可以排序
标签: python bash shell python-2.7 notepad++