Эта программа GNU awk (см. Комментарий @ EdMorton в комментариях) берет имя поля целевого файла из первой записи, создает файл на основе имени файла и имени поля и добавляет к нему поля. В приведенном ниже примере я использую данные примера дважды в файлах file1
и file2
:
$ awk '
FNR==1 { # first record of each file
for(i=2;i<=NF;i++) # iterate field names
f[i]=$i # and hash them to f
}
{ # for all records
for(i=2;i<=NF;i++) { # iterate all but first field
file=FILENAME "_" f[i] ".txt" # form the file name
print $1,$i > file # and print to it
}
}' file1 file2
Посмотрим, что сделано:
$ ls -rt | tail -n 4
file1_geneB.txt
file1_geneA.txt
file2_geneB.txt
file2_geneA.txt
Давайте посмотрим внутрь одного:
$ cat file1_geneA.txt
Sample geneA
Name countsA