Необходимо включить архитектуру i386
:
sudo dpkg --add-architecture i386
sudo apt update
Затем установите 32-битный пакет -:
sudo apt install libx11-6:i386
Предполагая, что ваши нуклеотиды закодированы с использованием букв в группе acgtn
, следующая команда удалит все, что не является символом из этой группы (, например. новые строки и пробелы и т. д. ), а затем посчитайте оставшиеся символы:
ncount=$( tr -d -c 'acgtn' <"$1" | wc -c )
Затем вы можете проверить это число с помощью простого теста, но обратите внимание на использование $((...))
, а не $(...)
:
if [ "$(( ncount % 3 ))" -eq 0 ]; then
echo 'nucleotide count is multiple of 3'
fi
Если вы используете буквы в верхнем регистре -или их сочетание, то соответствующим образом расширяйте строку, используемую с tr
.
Чтобы удалить все не -символы новой строки в группах по три, мы можем сделать:
sed 's/...//g' file
Если результатом являются только пустые строки, все строки содержат кратное трем символам.
Если ввод не является одной строкой и может содержать другие символы (, включая символы новой строки ), тогда удалите все, что не является символами основания нуклеотидов (в верхнем регистре ACGTN
), включая символы новой строки:
{ <file tr -cd 'ACGTN'; echo; } | sed 's/...//g'
Если результат пуст (только новая строка ), количество базовых символов кратно 3.
Предполагая, что вы хотите остановить скрипт (выйти ), если количество не кратно 3, используйте это:
if [ "$( { <file tr -cd 'ACGTN'; echo; } | sed 's/...//g')" ]; then
echo 'nucleotide count is not multiple of 3'
exit 1
fi
A sed
опция
f=$(sed -E "s/[actgn]{3}//g" file); echo ${#f}
Просто удалите все непрерывные допустимые группы из 3-х оснований, и если в конце останется что-либо, кроме строки нулевой длины, у вас возникнет проблема... хотя это позволит создавать новые строки при условии, что разрыв кратен 3 базы.
Использование bash
, GNUgrep
и wc
, но без переменных:
(exit $(( $(grep -io '[acgtn]' file | wc -l)%3 )) )
...который возвращает истинный код выхода, только если символы ДНК кратны трем.
Использование этого в коде может выглядеть так:
if (exit $(( $(grep -io '[acgtn]' file | wc -l)%3 )) ); then