Вы можете сначала использовать awk
вместо того, чтобы использовать split
и использовать другой инструмент rename
.
awk 'NR%5000==1{ file=sprintf("table_subset_%d", ((++c)) )} {print >file}' geno_file
это разделит файл geno_file
на блоки файлов размером 5 КБ с числовым суффиксом без начальных нулей, но вы можете свободно использовать 0Xd
в. выше с 4 цифрами длины, напримерsprintf("..._%04d", ((++c)) )
Или, если вы хотите разделить ваш geno_file
только на 9 частей выходного файла, сначала с split
и правильным использованием его параметров, чтобы установить числовой суффикс с 1 (по умолчанию 0 )и-a N
(генерируют суффиксы длины N (по умолчанию 2 )), вы можете просто использовать их следующим образом:
split -a 1 --numeric-suffixes=1 -l TOTALLINES/9HERE table_subset_
Но все же не забывайте awk
решение.
Этот пост не решит напрямую вашу проблему, но направит вас в направлении, близком к тому, что вы ищете.
PS :Кстати, я бы не стал использовать paste
для этой работы по обработке данных. Я бы выбрал awk или другой -более подходящий -инструмент.
Во всяком случае, с помощью paste
вы можете рассмотреть следующие «грязные» решения:
Случай 1:
$ k=3
$ paste -d ' ' a <(printf ' %.0s\n' $(seq 1 $k);cat b)
1
2
3
4 a
5 b
6 c
7 d
8 e
9
#You can adjust the value of $k with a kind of loop
Случай 2:
$ k=3
$ s=4
$ paste -d ' ' a <(printf ' %.0s\n' $(seq 1 $k);tail -n +$s b)
1
2
3
4 d
5 e
6
7
8
9
Если цель состоит в том, чтобы создать перекрестное произведение слов в a
со словами в b
, вы можете использовать join
следующим образом:
$ join -1 2 -2 2 a b
1 a
1 b
1 c
1 d
1 e
2 a
2 b
2 c
2 d
2 e
3 a
3 b
3 c
3 d
3 e
4 a
4 b
4 c
4 d
4 e
5 a
5 b
5 c
5 d
5 e
6 a
6 b
6 c
6 d
6 e
7 a
7 b
7 c
7 d
7 e
8 a
8 b
8 c
8 d
8 e
9 a
9 b
9 c
9 d
9 e
Объединение файлов в несуществующем -поле создаст все возможные комбинации строк в двух файлах. Обратите внимание, что это вставляет пробел в начале каждой строки.