Как сделать так, чтобы paste -d печатал второй файл во время цикла?

Вы можете сначала использовать 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решение.

1
30.08.2019, 02:07
2 ответа

Этот пост не решит напрямую вашу проблему, но направит вас в направлении, близком к тому, что вы ищете.

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
0
28.01.2020, 00:01

Если цель состоит в том, чтобы создать перекрестное произведение слов в 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

Объединение файлов в несуществующем -поле создаст все возможные комбинации строк в двух файлах. Обратите внимание, что это вставляет пробел в начале каждой строки.

0
28.01.2020, 00:01

Теги

Похожие вопросы