我有一个像这样的(巨大)文件:
测试_文件
a b
a c
a d
b a
b b
a g
a j
c g
我试着根据第一个字段把它分成多个文件。但是,重复而非连续的值应创建一个新文件(即,每当字段1中的值分别更改为上一行时,应生成一个新文件)。因此,在前面的示例中,行:
^{pr2}$应转到一个不同于具有以下内容的新文件:
a b
a c
a d
每个字段中有一个文件的更改,表示其中一个文件的末尾:
a.1
a b
a c
a d
b.2节
b a
b b
a.3
^{pr2}$c.4款
c g
实际上,如果标识符是:a.1、b.1、a.2、c.1或任何其他类型的后缀,它也可以工作。我希望避免第二个子集/组的a值来替换/覆盖第一组a值生成的前一个文件。我也不希望所有的a值都附加到同一个文件中。在
我知道:
awk '{print > $1; close( $1)}' test_file
将使用第一列进行拆分,但当键相等时,它还会将结果追加到同一个文件中。在
为了避免这个问题,我考虑添加另一个真正不同的字段。比如:
测试_文件
1 a b
1 a c
1 a d
2 b a
2 b b
3 a g
3 a j
4 c g
然后做:
awk '{print > $1"_"$2; close( $1"_"$2) }' test_file
但我真的找不到一个方法,因为我认为在这种情况下,关联数组不起作用。有什么想法吗?在
在Python2.x中,可以使用
groupby
完成此操作,如下所示:如果您使用的是Python 3.x:
^{pr2}$Awk真的很简单,不是吗?在
听起来你可能想要这个:
你的问题不太清楚,但不是很清楚。在
相关问题 更多 >
编程相关推荐