我通常使用原始或 csv 文件,这些文件具有可以在各种数学程序中使用的唯一标识符。最近,我收到了一个文件文件夹,其中将记录相互匹配的唯一方法是通过它们在文本文件中的位置。
这是一个示例 File01.txt:
AA1000
AA2222
AB1X6110305126101234760ABA08B88 ZZ1111110000
AB2X611030512612006100901C109Z 001110001110
AB2X611030512612006100901X571Z 007410000000
AB1X6110305127101234760ABA10B89 ZZ1111110022
AB2X611030512712006101001A571Z 007410000000
AB1X6110305128101234760ABA10C00 ZZ1111110055
AB2X611030512812006101001A571Z 007410007410
AC11
第 3 行以 AB1 开头,第 4-8 行以 AB2 开头,对应于第 3 行,如从该行第 4 位开始的 12 个字符串所示。该 12 个字符的字符串是匹配集群的唯一方法,但它不一定在所有行中都是唯一的。要知道 4-8 中的 AB2 组对应于第 3 行中的 AB1 组的唯一方法是第 4-8 行跟随第 3 行。对于像我这样的非程序员来说,这是一场噩梦。
我想做的是在 File01.txt 中读取并逐行循环,直到遇到 AB1 行。我想存储 AB1 线,然后继续循环。一条 AB1 线后面总是至少有一条 AB2 线。我想将 AB2 行写入数组并从内存中追加 AB1 行,然后继续循环并写入数组,直到遇到新的 AB1 行。新的 AB1 行现在将存储在内存中,并按照上述方式执行直到下一个 AB1 行,依此类推,直到到达文件末尾(通常是 AC11 行)
我希望输出文件看起来像这样:
AB2X611030512612006100901C109Z 001110001110 AB1X6110305126101234760ABA08B88 ZZ1111110000
AB2X611030512612006100901X571Z 007410000000 AB1X6110305126101234760ABA08B88 ZZ1111110000
AB2X611030512712006101001A571Z 007410000000 AB1X6110305127101234760ABA10B89 ZZ1111110022
AB2X611030512812006101001A571Z 007410007410 AB1X6110305128101234760ABA10C00 ZZ1111110055
虽然不理想,但我可以使用这种类型的数据并拆分字符串等。这可能使用 bash 和 awk 或 sed 之类的东西吗?
提前感谢您提供的任何帮助/见解。