I have a big tab-separated matrix in a file on Linux:

```none
Name    ID  ABC12   ABCD12  ABCD123 ABCD1234
ABC12   123456  XX  YY  ZZ  JJ
ABC12   123456  XX  YY  ZZ  JJ
ABCD12  123456  XX  YY  ZZ  JJ
ABCD12  123456  XX  YY  ZZ  JJ
ABCD123 123456  XX  YY  ZZ  JJ
ABCD123 123456  XX  YY  ZZ  JJ
ABCD1234    123456  XX  YY  ZZ  JJ
ABCD1234    123456  XX  YY  ZZ  JJ

```

I want to split this matrix into individual files based on matching in 1st column, [it's a large file, cannot count column numbers] 

expected output:

File 1 ;
--------

```none
Name    ID  ABC12
ABC12   123456  XX
ABC12   123456  XX

```

File 2 ;
--------

```none
Name    ID  ABCD12
ABCD12  123456  YY
ABCD12  123456  YY

```

File 3 ;
--------

```none
Name    ID  ABCD123
ABCD123 123456  ZZ
ABCD123 123456  ZZ

```

File 4 ;
--------

```none
Name    ID  ABCD1234
ABCD1234    123456  JJ
ABCD1234    123456  JJ

```