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