Повторяющиеся строки в текстовом файле в зависимости от значения столбца - PullRequest
1 голос
/ 18 апреля 2019

Я пытаюсь продублировать ряд строк в зависимости от целого числа, присутствующего в одном из столбцов.

Например, при рассмотрении 4-го столбца:

AATTGGCC  5.2  4.8  1
CCGGTTAA  1.8  3.3  3
ATATGCGC  1.8  4.6  1

Мой код должен возвращаться:

AATTGGCC
CCGGTTAA
CCGGTTAA
CCGGTTAA
ATATGCGC

В настоящее время у меня есть этот код:

while read line; do
   for i in awk '{4}'; do
   awk '{print $1}' >> output.txt
   done
done < input.txt

Однако все, что он возвращает, - это первый столбец исходной таблицы.

Может кто-нибудь, пожалуйста, помогите мне?

1 Ответ

5 голосов
/ 18 апреля 2019

С вашими данными в файле с именем f вы можете сделать это просто с помощью awk, например

$ awk '{ n=$4; while (n--) print $1}' f
AATTGGCC
CCGGTTAA
CCGGTTAA
CCGGTTAA
ATATGCGC

Где вы просто получаете число в 4-м столбце и циклически повторяете вывод первого столбца в отдельной строке. Дайте мне знать, если у вас есть дополнительные вопросы.

Если вы хотите сделать это с помощью shell (не, но гипотетически), вы можете сделать по сути то же самое:

$ while read dna n n n; do while ((n-- != 0)); do  echo "$dna"; done; done < f
AATTGGCC
CCGGTTAA
CCGGTTAA
CCGGTTAA
ATATGCGC

awk всегда будет на несколько порядков быстрее, чем обработка с помощью цикла оболочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...