我已经花了最近的2-3天搜索和搜索解决方案,但我似乎无法找到任何。找到图案后找回最后一个和下一个图案
基本上,我有一个包含数十万条记录的文本文件。以下是该文件中包含的模式。
- 线01:^ d 23554
- 02行:Q 123 325
- 03行:Y qwe325
- 线04:^ P fiwkkwlds
- 线05:Y qrwe
- 线06:Y rtewt
- 07行:^ A 284274 DFL 2939955 001
- 08号线:F 2739
- 线09:^ d 23556
- 第10行:^ķ2994
- 线11:^ A 284274 DFL 2939966 002
- 第12行:^ķ29942
- 第13行:^ķ32423
- 线14:^ A 284274 DFL 2939957 003
- 线15:F 23425
- 线16:^ A 284274 DFL 2939958 004
- 线17:F 92823
- 线18:和s o ...
基本上,在数据中没有特定的模式,但是每一行的开始 - >^D,Q,Y,^ P,^ A,F,^ k表示一个简单的消息。
我想找创建一个脚本(优选在壳,PERL或C++),将扫描从第一行一个文件,直到最后一行和
1)检索在^ A线的所有值 2)插入一个分隔符 3)检索的最后一个值的^ d线 4)插入一个分隔符 5)取回的F线 6的下一个值)希望,与数据创建另一个文本文件
根据我之前的例子,下面是结果:
- 第01行:284274 DFL 2939955 001 | 23554 | 2739
- 02号线:284274 DFL 2939966 002 | 23556 | 23425
- 线03:284274 DFL 2939957 003 | 23556 | 23425
- 线04:284274 DFL 2939958 004 | 23556 | 92823
换句话说:从^ A线
值|前面的^ D行|的值来自下一个F行的值。
有人可以帮助我吗?我一直在阅读有关hashmaps和hashtables,但我不太清楚如何使用它们。我已经看到了许多使用grep的解决方案,例如,在您找到一个模式后:^ A,然后在该模式之前/之后打印最后的x行,因为此数据可能超级随机,前面的^ D消息或下一个F消息可能在任何线路上。
该解决方案将有必要读取文件,并始终在内存中保存^ D和F行值,并找到模式^ A时检索它们。
有人可以帮助我了:)
谢谢!!!!
向我们显示您的代码。你试过什么了? – Ibrahim
嗨易卜拉欣。我没有写任何代码,因为我不确定要做什么。我使用grep进行了一些测试,以从^ A,^ D和F行中检索内容 - 在单独的文件中,但没有多少内容。我正在考虑导入SQL数据库中的文件,并试图找到解决方案,但我认为这对我很有帮助。你有什么建议吗?谢谢! –