Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Консольные утилиты для текстовых файлов  (Прочитано 653 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Aranarh

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Здравствуйте!
Второй день мучаюсь, никак не могу решить, казалось бы, несложную задачу.
Дано: текстовой файл вида:

BaitID   Sequence
000001   GTGGAGGGAGAGAAGAAGATGTGCCGCATGTGTGGGGCCCCCACAGTGAGCCTGGAAGCACCAGAGCCACT
000002   GCACTGTTGCACAGCCTCTGGGCAGTGCAGAGCCTCTGGGCAGTCTCTGTCCCTCATCAGGACGGCTGATG
000003   TGTCTTCATGACATCAAACCCTGGGTACCCATGGCCTTCTGTTAGCTCGTGGGGTGTCTTCATTTTTGAGA
000004   GGGGGATGGCGGGGCTCACTTGTTTCCTTCTCTTGGGCCTGCACAGTAACAGCCCACAGTGTCTATAAGAT
000005   AACTCTTTCTGAAAATGAACTCAAATCTTGTGTTCATGATTTCTGATTTGAAAACAAAGAAACAAAGTTGA
000006   TAAAATAGTATGTTTTTAAAAATATAGTGTAATTAGATATGCTGGCACATAATTTGTCAGATAATTGCATG
000007   AACAACTCTCCTTAATGGAGTTTGGATGCTTATGGGATATTGAGTGAATGGGAAGATTTGATGAGAGGTCA
000008   TAATTCAAAGGCATTTCTTCTCTGCATGTTCTAAACAAAAAGCATTATTATTTGCTGAGTCAGGTTATTAG
000009   CTCCAGGGTTGTCCTTGGCTTGGGGTGGTGGCTAGGAGAAGTCCCCACTCCCAGGTGGAAAGCTGTAGTTG
000010   GGGTGGGCCCTTCCTGCCTGGGTGGTCAGAGTGGGGGGCTCACACAGATCCTGAGCCAGGGCTCTAGGTGA
000011   CTGAACATCCCTGCGCAGGCTGCCTGCCCCCCACTCCCGAGGCAGATCCGATATCTTGGCTCGGCACCCCC
000012   CTCCTGAAGGGTCGTGTTCTCTTTCTCCGAGGACAAGTTCCATTTGTGATAGCCTGGAGGGGGTGCCTCGC

Надо:
1) Искать выражение (в данном случае буквосочетание CG) во второй колонке каждой строки;
2) В строках, содержащих CG, сосчитать количество CG;
3) Вывести количество CG в каждой строке в третью колонку.

Иными словами, на выходе должен получиться файл вида:

BaitID   Sequence   Count_of_CG
000001   GTGGAGGGAGAGAAGAAGATGTGCCGCATGTGTGGGGCCCCCACAGTGAGCCTGGAAGCACCAGAGCCACT   1
000002   GCACTGTTGCACAGCCTCTGGGCAGTGCAGAGCCTCTGGGCAGTCTCTGTCCCTCATCAGGACGGCTGATG   1
000003   TGTCTTCATGACATCAAACCCTGGGTACCCATGGCCTTCTGTTAGCTCGTGGGGTGTCTTCATTTTTGAGA   1
000004   GGGGGATGGCGGGGCTCACTTGTTTCCTTCTCTTGGGCCTGCACAGTAACAGCCCACAGTGTCTATAAGAT   1
000005   AACTCTTTCTGAAAATGAACTCAAATCTTGTGTTCATGATTTCTGATTTGAAAACAAAGAAACAAAGTTGA   0
000006   TAAAATAGTATGTTTTTAAAAATATAGTGTAATTAGATATGCTGGCACATAATTTGTCAGATAATTGCATG   0
000007   AACAACTCTCCTTAATGGAGTTTGGATGCTTATGGGATATTGAGTGAATGGGAAGATTTGATGAGAGGTCA   0
000008   TAATTCAAAGGCATTTCTTCTCTGCATGTTCTAAACAAAAAGCATTATTATTTGCTGAGTCAGGTTATTAG   0
000009   CTCCAGGGTTGTCCTTGGCTTGGGGTGGTGGCTAGGAGAAGTCCCCACTCCCAGGTGGAAAGCTGTAGTTG   0
000010   GGGTGGGCCCTTCCTGCCTGGGTGGTCAGAGTGGGGGGCTCACACAGATCCTGAGCCAGGGCTCTAGGTGA   0
000011   CTGAACATCCCTGCGCAGGCTGCCTGCCCCCCACTCCCGAGGCAGATCCGATATCTTGGCTCGGCACCCCC   4
000012   CTCCTGAAGGGTCGTGTTCTCTTTCTCCGAGGACAAGTTCCATTTGTGATAGCCTGGAGGGGGTGCCTCGC   3


Вопрос: можно ли решить эту задачу встроенными средствами консоли, т.е. без серьезного программирования? Если да, то подскажите, пожалуйста, в каком направлении следует думать. Единственное, чего я на данный момент достиг - раскрасить все CG с помощью grep 'CG' --color=auto. Но автоматически считать количество совпадений с искомым выражением в каждой строке grep, похоже, не умеет...

Заранее спасибо!

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: Консольные утилиты для текстовых файлов
« Ответ #1 : 05 Декабря 2010, 12:15:53 »
Да. sed, возможно, ещё wc.

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Консольные утилиты для текстовых файлов
« Ответ #2 : 05 Декабря 2010, 12:33:31 »
Если побыстрому набыдлокодить на awk, то чета типа того:
awk '$1~/[0-9]+/{c=0;s=$2;while(sub(/CG/," ",s))c++;print $0" "c;next}{print $0}'
« Последнее редактирование: 05 Декабря 2010, 12:41:58 от Mam(O)n »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Консольные утилиты для текстовых файлов
« Ответ #3 : 05 Декабря 2010, 12:38:05 »
awk '{FS="CG";print $0"   "NF-1}'^^

Оффлайн Aranarh

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Консольные утилиты для текстовых файлов
« Ответ #4 : 05 Декабря 2010, 14:41:52 »
Mam(O)n и ArcFi, большое вам спасибо и огромный респект! Оба варианта отлично работают!

 

Страница сгенерирована за 0.017 секунд. Запросов: 20.