【发布时间】:2023-04-01 17:32:02
【问题描述】:
可能重复:
Pattern decoding
我对上一篇关于模式解码的帖子有一些新问题:
我有几乎相同的数据文件,但是有双空(空白)行,在解码时必须考虑到这一点。 因此,双空线表示有一条街道/灌浆(有关定义,请参见上一篇文章:Pattern decoding),其中有零 (0) 个房子,但我们也必须计算这种模式。 (是的,您可能会认为,这是绝对错误的说法,因为没有至少一栋房子的街道,但这只是一个比喻,所以请接受它。)
这是新的数据文件,带有双线:
0 0 # <--- Group 1 -- 1 house (0) and 1 room (0)
0 0 # <--- Group 2 -- 2 houses (0;1) and 3,2 rooms (0,1,2;0,1)
0 1
0 2
1 0 # <--- house 2 in Group 2, with the first room (0)
1 1 # <--- house 2 in Group 2, with the second room (1)
0 0 # <--- Group 3
0 1 # <--- house 1 in Group 3, with the second room (1)
0 2
0 0 # <--- Group 4
1 0 # <--- house 2 in Group 4, with one room only (0)
2 0
3 0 # <--- house 4 in Group 4, with one room only (0)
0 0 # <--- Group 5
# <--- Group 6 << ---- THIS IS THE NEW GROUP
0 0 # <--- Group 7
# <--- Group 8 << ---- THIS IS THE NEW GROUP
0 0 # <--- Group 9
0 0 # <--- Group 10
我需要像以前一样将其转换为一种优雅的方式,但在这种情况下,我们也必须考虑这些新组,并按照 Kent 例如:roupIdx houseIdx numberOfRooms,其中 houseIdx 等于零 houseIdx = 0 和 numberOfRooms 也等于零 numberOfRooms = 0。所以,我需要得到这种输出,例如:
1 0 1
2 0 3
2 1 2
3 0 3
4 0 1
4 1 1
4 2 1
4 3 1
5 0 1
6 0 0
7 0 1
8 0 0
9 0 1
10 0 1
我们可以这样调之前的代码吗?
更新:新的第二个空行表示一个新组。如果在空行之后还有一个空的新行,如本例
0 0 # <--- Group 5
# <--- Group 6 << ---- THIS IS THE NEW GROUP
0 0 # <--- Group 7
# <--- Group 8 << ---- THIS IS THE NEW GROUP
我们只是将新的空行(2 个空行中的第二个)视为一个新组,并将它们表示为group_index 0 0。请参阅上面的所需输出!
【问题讨论】:
-
给一个人一条鱼,他第二天会回来吃第二条吗?第一个问题的答案为您的问题提供了非常好的 awk 代码。
-
与以前的问题不同...是的,我知道上一篇文章中有一个非常好的答案,但不适用于当前的问题...
-
我推荐阅读tinyurl.com/so-hints,并特别注意“留下好印象”。