Упражнения
Упражнения обязательно нужно выполнить полностью. Если не успели во время занятия, то проделайте после. Но в отчете их отражать не нужно.
- (chmod) Скопируйте сценарий ~/term1/credits/script_pr5.sh в папку ~/term1/pr6 (её предварительно нужно создать). И сделайте из него полноценный исполняемый файл: добавьте shebang и установите для владельца право на исполнение. Запустите сценарий на исполнение из папки ~/term1/pr6 без указания интерпретатора (то есть первым (нулевым) аргументом команды должно быть имя файла сценария). Попробуйте запустить его из другой папки. Только не испортите в процессе исходный скрипт, я его еще не проверил! 
- (which) Определите, где на kodomo лежит исполняемый файл bash. 
- (file) Узнайте, что программа file пишет про исполняемый файл bash, про исполняемый файл env, про ваш скрипт из credits, про его новый вариант из pr6. 
- (grep) Выведите все строчки файла /P/y21/term1/pr6.txt, которые содержат слово qwerty. 
- (grep, less) Выведите все строчки файла /P/y21/term1/pr6.txt, которые содержат слово qwerty в любом регистре букв. Посмотрите эти строки в less. 
- (grep, wc) Выведите все строчки файла /P/y21/term1/pr6.txt, которые начинаются на qwerty в любом регистре. Сколько таких строк? 
- (grep) Выведите все строчки файла /P/y21/term1/pr6.txt, которые заканчиваются на qwerty в любом регистре. 
- (grep) Выведите все строчки файла /P/y21/term1/pr6.txt, которые полностью равны qwerty (без учета регистра). 
- * (grep) Выведите все строчки файла /P/y21/term1/pr6.txt, которые либо начинаются на qwerty, либо заканчиваются на qwerty. 
- (grep) Выведите все строчки файла /P/y21/term1/pr6.txt, которые содержат слово ^qwerty. 
- (grep) Выведите все строчки файла /P/y21/term1/pr6.txt, которые содержат слово qwerty$. 
Задания практикума 6
Окончательная версия заданий, можете приступать к выполнению.
Мягкий дедлайн – 23:59 15 октября, жесткий дедлайн – 01:00 22 октября. После мягкого дедлайна штраф 0.5 балла, после жесткого – 2 балла.
Результат выполнения каждого задания должен быть полноценным сценарием bash, т.е. должен содержать правильный shebang, и как минимум владелец файла (т.е. вы) должен иметь право на его исполнение. Перед записью в очередь на проверку обязательно нужно проверить каждый сценарий, запустив его на любом тестовом примере.
Подсчет количества последовательностей в файле fasta
Ваша задача – написать скрипт ~/term1/credits/count_seqs.sh, который принимает на вход (STDIN) текст в формате fasta и выводит (STDOUT) одно число – количество последовательностей во входном потоке.
Как выглядит файл в формате fasta вы можете вспомнить на примере последовательности генома своей бактерии/археи. Вы скачивали и распаковывали этот файл в практикуме 2. В этом файле может оказаться только одна последовательность. В этом случае можете использовать для тестирования сценария файл /P/y19/term3/block2/X5.fasta. Только к себе в домашнюю папку его не копируйте, он приличное количество места занимает.
При выполнении задания будет сложно обойтись без grep (можно попробовать и без него, используя tr, но только в качестве упражнения).
Получение координат открытых рамок считывания (CDS) с прямой цепи
Ваша задача – написать скрипт ~/term1/credits/cds_coords.sh, который принимает на вход (STDIN) таблицу локальных особенностей генома (такую же, как вы скачивали в пр. 2 для своей бактерии/археи), и выводит (в STDOUT) координаты (столбцы start и end) открытых рамок считывания (CDS в первом столбце) с прямой цепи (+ в столбце strand). В выдаче должно быть два столбца, а не три.
Символ + является специальным для grep! По-хорошему его нужно правильно экранировать. За отсутствие аккуратного экраниварования буду снижать баллы даже в случае правильного вывода.
Это задание довольно просто выполняется с помощью нескольких циклов вырезания нужных столбцов (cut) и фильтрации строк (grep). Не забудьте избавиться от заголовка таблицы.
Вместо экранирования специальных символов для grep можно воспользоваться его опцией, которая отключает интерпретацию всех спец. символов в grep. Но такой способ вам не подойдет, если вы собираетесь использовать другие специальные символы (например, ^ или $).
Обратите внимание, что оба скрипта принимают все нужные данные на STDIN! Т.е. ваш скрипт должен работать примерно так, как это делает tr:
echo "DATA" | tr -d 'A' | less
# или
tr -d 'A' < data.txt > output.txt
Скрипты, которые ожидают название файла в качестве аргумента, или, тем более, используют фиксированное название входного файла, засчитанны не будут. Т.е. так нельзя:
./script.sh data.txt | less
# и так тоже нельзя
./script.sh
Error: data.txt: No such file or directory

 
 2025
 2025 2024
 2024 2023
 2023 2022
 2022 2020
 2020
 2019
 2019 2018
 2018 2017
 2017