2017-01-26 4 views
2

Я пытаюсь разбить файл покрытия (tab delim) на первый столбец, так что каждая хромосома имеет определенный файл.Разделить на первый столбец

Я уже сделал с

cat file.coverage | awk ' { if ($1 == "chrn"){print}}' 

, но таким образом я сделать п раз для п-образцов.

Я бы хотел, чтобы это было рекурсивно: прочитайте первый столбец, в то время как chr тот же, распечатайте его в файле A, в противном случае распечатайте в файле B и так далее.

Как я могу это достичь?

+1

Приведите пример ввода и ожидаемого вывода. – Inian

+0

... как насчет 'awk '{print >> $ 1" .log "}' file.coverage'? (Боковое замечание не нужно кошке и трубе, просто дайте awk прочитать сам файл.) – Tensibai

+0

«Я должен делать n-раз для n-образцов» - используйте простой английский. Мы не знаем, что такое «n раз для n-выборок». Между тем, -1 для вопроса. – user31264

ответ

1

Как @Tensibai указано в комментариях, вы можете DO-

awk '{print >> $1".log"}' file.coverage 

Explanation-

awk один лайнер просто присоединяет строки в файлы, которые названы в соответствии с индексами в первом столбце.

Вам не нужно cat filename | awk. awk способен читать файлы самостоятельно. Это бесполезное использование cat.

На другой стороне записки (для будущих кодов, которые вы пишете), ваша первая линия может быть сокращен to-

awk '$1 == "chrn"' file.coverage 

Нет необходимости для if.

+0

'' 'достаточно, он будет добавлен. – karakfa

Смежные вопросы