Beyond Compare:通过宏替换不同的前 6 位数字

BeyondCompare: Replace first 6 digits if different via macro

我们正在使用 BeyondCompare 4 来比较两个文件。有没有一种使用 BeyondCompare 的方法,通过按下按钮,只有前 6 位数字从文件 A 复制到文件 B?

我不想复制整行,如果我们真的想替换第一位数字,我们需要检查和审查。所以我们不能通过宏使用任何自动替换。

例如:

FileA:
(ABCD)  This is a testline
(----)  This is the 2nd line


FileB:
(0000)  This is not a testline
(ABCD)  This is the second line

经过审核,新文件应该是FileB,FileA第一行的第一个数字:

Result:
(ABCD)  This is not a testline
(ABCD)  This is the second line

提前致谢,

我找到了一个棘手的解决方案。

首先您需要一种新的文件格式,定义为 table 格式。

  1. 工具 -> 文件格式
  2. 按+和selecttable格式
  3. 定义掩码(在我的例子中是 *.yyy)
  4. 设置定界类型并定义分隔第一个字符的字符:

在此之后,您可以比较两个文件(在我的例子中,扩展名为 yyy): 要获得正确的对齐方式,您必须将第一列设为标准列(无键列): 现在您可以转到“文本详细信息”区域(如果没有,请使用“查看”->“文本详细信息”使其可见)。 在这里您可以转到一列并将其复制到右侧:

现在您只复制了文件的一部分。

备注:

我也尝试了修复的类型。第一列的 with 必须与您需要的第一个数字一样大。然后制作一个大的第二列以获取所有其他数据: 这导致以下比较: 但是通过这种比较,我无法复制单个列(@Scooter-Team:也许这是一个错误?)

在 Beyond Compare 的文本比较中复制一行的一部分的唯一方法是使用复制和粘贴。复制命令将始终复制整行。

克努特使用 Table 比较的方法是唯一的解决方法。

非常感谢您的详细描述。我按照 Knut 的建议进行了尝试,它起作用了,但我需要做一个小的调整,因为在我使用的文件中有更大的行,而 BeyondCompare 无法始终正确识别这些行。 对我有用的是将“)”设置为分隔符。然后我可以找到前 6 位数字,其余的将作为文本处理以进行比较。

固定类型的比较也不适合我。找到了每个不同的行,但是当我 select 行详细信息中的单元格时,它只用前 6 位数字替换了行。如果我只能替换第一位数字而不是用第一位数字替换整行,这种方法将是理想的。