该文件的格式为:
header - like 0001datetime|number of records
0010 some data
0012 Roll number (eg)
0020 some data
.
.
.
0070 some data
0010 some data
0012 Roll number (eg)
0020 some data
.
.
.
0070 some data
trailer - like 0099datetime|numberof records
要求 - 将提供滚动编号列表,并且需要删除这些编号的记录(0010-0070)。 0010 和 0070 之间可能有任意数量的字段,但广告订单号始终为0012 。
每条记录始终以0010开头,以0070结束。
有人可以帮忙吗?
答案 0 :(得分:0)
除了标题和预告行之外,您的文件由块组成。每个块以0010行开始,以0070行结束。
一个简单的算法是始终将一个整块读入内存,并且只有当0012行(表示卷号)不是要删除的卷号之一时才写出来。
您正在通过" shell"标记此问题。然而,尽管使用just,即bash或zsh的解决方案在技术上是可行的,但我认为使用更灵活的语言更容易 - Ruby,Perl,Python等。也许你可以用您选择的语言?
如果您还不熟悉其中一种语言,我的个人推荐是Ruby,因为我发现它很快学会了;但是所有这些都同样适合这个问题。