我有一个我们将调用 info.txt 的文本文件,该文本文件包含许多长行,每行都有许多标签,如下所示:
A bunch of usless info {tag15}data data{Tag1}data {Tag2}data {Tag11}data {Tag1}data {Tag2}
因此,在本文档中,我需要找到 {Tag15} 并提取 {Tag15} 和 {Tag11} 之间的所有内容,或者它可能是另一个 {Tag15} 并将该数据段放入一个新的文本文件中。这样我就有了一个 15.txt 和一个 11.txt ,其中包含正确的数据段,包括它和下一个 Tag 字符串之间的所有标签。所以在这个例子中 15.txt 将包含:
{tag15}data data{Tag1}data {Tag2}data data
{tag15}data data{Tag1}data {Tag2}data data data data {Tag3}data
{tag15}data data{Tag1}data {Tag2}data
11.txt 将包含:
{Tag11}data {Tag1}data {Tag2}data data data {Tag3}data
{Tag11}data {Tag1}data {Tag2}data
{Tag11}data {Tag1}data {Tag2}data data
话虽这么说,我能看到的最合乎逻辑的方法是找到所有 Tag15 和 Tag11 并将它们移动到新行,这样我们就不必确定数据集有多长,因为它可以非常适合每个标签集. 然后通过另一个 findstr 处理文件并将每个匹配的行拉出到适当的文件中。我不知道该怎么做是在找到 {tag15} 或 {tag11} 的行的确切点插入一个新行。有什么想法吗?
文本文件总共将包含大约 200-300 个这些标签集,需要对其进行解析和排序到适当的 txt 文件中。提前感谢您提供的任何帮助。
我对批处理以外的其他解决方案持开放态度,这恰好是我最满意的。
编辑:
我可以理解为什么这里需要更多信息,并为一开始没有提供信息而道歉。因此,源文件每一行中的标记段将始终以 {tag15} 或 {tag11} 开头,但该段中跟随的标记可能会根据推送的数据而有所不同,例如,如果 Tag2 填充了 Y 比Tag3 是必需的,但如果 Tag2 为 N 则 Tag3 将不存在于段中,但 tag5、6 或 200 可能。这就是为什么我觉得最好找到 Tag15 或 11 并将其移动到自己的行,这样您就不必依赖尝试确定要移动的字符串的长度。示例 15.txt 和 11.txt 旨在说明由于每个段的数据不同而可能会是什么样子,但以下是源文件可能会产生的样子:
Line1: FirstLast 55555555 10092013 0000000 {tag15}data data{Tag1}data {Tag2}data data {tag15}data data{Tag1}data {Tag2}data data data data {Tag3}data {Tag11}data {Tag1}data {Tag2}data data data {Tag3}data
Line2: FirstLast 444444444 10092013 000000005 {Tag11}data {Tag1}data {Tag2}data {tag15}data data{Tag1}data {Tag2}data {Tag11}data {Tag1}data {Tag2}data data
我的想法是你拿这个包含所有数据的文件,找到 Tag15 和 Tag11 并将它们移动到自己的行,这样文件看起来像这样:
FirstLast 55555555 10092013 0000000
{tag15}data data{Tag1}data {Tag2}data data
{tag15}data data{Tag1}data {Tag2}data data data data {Tag3}data
{Tag11}data {Tag1}data {Tag2}data data data {Tag3}data
FirstLast 444444444 10092013 000000005
{Tag11}data {Tag1}data {Tag2}data
{tag15}data data{Tag1}data {Tag2}data
{Tag11}data {Tag1}data {Tag2}data data
现在每一行都是它自己的段,我们只需使用 Findstr 运行一个 For 循环并将这些行回显到正确的 txt 文件,还是我错过了什么?如前所述,我最大的问题是我不确定如何将文件从其原始状态获取到上面的示例,以便可以对其进行排序,而无需知道我们尝试提取的字符串的确切长度。我希望这有帮助