Подсчет количества вхождений символа в последовательности

А теперь ответ systemd.

Поскольку вы спрашивали, как это сделать с помощью systemd.& #9786;

Вот как люди из systemd говорили людям делать это.

Вы помещаете файл сервисного модуля в неправильный каталог. Он не должен идти в /etc/systemd. Он даже не должен входить в /etc/systemd/system. Он должен идти в ~marton/.config/systemd/user.

Это связано с тем, что графическая программа, которую вы хотите запустить под своей учетной записью, является службой для -пользователя , а не системной службой. (В настоящее время вы используете веб-браузер в качестве суперпользователя. Это очень плохая идея. Прекратите это немедленно ! )Вы могли бы настроить его для всех пользователей в каталоге /etc/systemd/user, но вполне вероятно, что не всем пользователям на вашем компьютере нужно запускать Chromium как службу. Поэтому настройте его только для своей учетной записи пользователя, в частности.

Так как это сервис для каждого -пользователя, вы должны манипулировать им с опцией --userна systemctl, без sudo. Например:

systemctl --user status chrome.service

Это также относится к его включению и отключению.

В соответствии с -пользовательской единицей обслуживания это должно быть WantedBy=default.target, потому что нет multi-user.targetдля каждой -пользовательской службы. (Хотя я подозреваю, что на самом деле должно быть WantedBy=your-desktop-session.target, что будет что-то вроде gnome-session.targetв зависимости от того, какой рабочий стол вы используете. То, что говорили люди из systemd, не совсем ясно по этому поводу.)

И одна часть задачи systemd, которую люди должны сделать для каждого -пользовательского сервиса, похожего на -логин -сервис сеанса, — это весь graphical-sessionмеханизм, который ваш сервисный модуль должен включить в настройку:

[Unit]
PartOf=graphical-session.target

Что еще вам нужно сделать, зависит от того, насколько OpenSuSE продвинулась со всей graphical-sessionчепухой, которую разработчики systemd начали продвигать в 2016 году.Ubuntu и Debian предоставляют полный беспорядок закулисных сценариев оболочки при запуске и завершении сеанса входа в систему с графическим интерфейсом, который скрывает как запуск / остановку graphical-session.target, так и внедрение переменной среды DISPLAY. Если в вашем OpenSuSE этого еще нет, возможно, вам придется заполнить эту часть.

Дополнительная литература

-2
04.03.2018, 09:06
3 ответа

Awk solución:

awk '{ print "Number of nucleotide G is "gsub("G", "") }' <<<"GTCGTAATGCGGATCGGAATCGA"
Number of nucleotide G is 8

grep+wcsolución:

printf "Number of nucleotide G is %d\n" $(grep -o 'G' <<<"GTCGTAATGCGGATCGGAATCGA" | wc -l)
Number of nucleotide G is 8
0
28.01.2020, 05:15

Uso de Perl:

echo 'GTCGTAATGCGGATCGGAATCGA' | perl -ne 'printf "number of nucleotide G is %d\n", ($_ =~ tr/G/G/)'

Esto cuenta las G usando el operador trde Perl. Devuelve el número de reemplazos realizados y estamos reemplazando cualquier G con una G.

La salida será

number of nucleotide G is 8

Si desea generalizar esto para contar también otras bases, entonces no ejecute esto varias veces en datos del tamaño del genoma, pero vaya al sitio Bioinformatics StackExchange y busque para respuestas allí.

0
28.01.2020, 05:15

Con bash

var='GTCGTAATGCGGATCGGAATCGA'
var="${var//[^G]}"
echo "Number of nucleotide G is ${#var}"
3
28.01.2020, 05:15

Теги

Похожие вопросы