Поскольку вам нужны перекрывающиеся строки, боюсь, ни один инструмент не может обеспечить это по умолчанию. Необходимо перебрать вход, чтобы найти все перекрывающиеся вхождения. Следующая проблема — жадный характер регулярных выражений :. Вы не найдете опережающего ATCGTA
, если можно найти ATCGTAGCTA
. Это усложняет выполнение цикла :
sed -E ':1
h;s/(.*TA).*/\1/
s/.{0,20}TA$/_&/
s/.*_//p
g;s/(.*)TA.*/\1/;t1
d
— первое решение, которое пришло мне в голову. Вывод для примера должен содержать все нужные вам последовательности:
GATGCTGCTATGCTAGATGCTA
TCGTATCGATGCTGCTATGCTA
TAGCATCGTATCGATGCTGCTA
ATCGTAGCTAGCATCGTA
ATCGTAGCTA
ATCGTA
Объяснение :Кажется, проще начать с последнего совпадения, поэтому
h
сохранить буфер в резервной области для следующего цикла s/(.*TA).*/\1/
удаляет все после последнегоTA
s/.{0,20}TA$/_&/
ставит подчеркивание в качестве маркера в начале последовательности, которую вы хотите получить s/.*_//p
удаляет все до маркера и печатает последовательность g
восстанавливает сохраненный шаблон, а s/(.*)TA.*/\1/
удаляет последний TA
и последующие, чтобы его больше нельзя было найти t1
начинается с :1
, в то время как последовательность была найдена. d
подавляет ложный вывод в конце Это работает в Debian Bullseye (11)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="204.4.3.4" destination address="172.18.30.0/24" port port="80" protocol="tcp" accept'
firewall-cmd --reload
Добавление флага permanent
приводит к тому, что он нацеливается на не -временный брандмауэр (, правила для которого перечислены ), а также сохраняются, а затем firewall-cmd --list-rich rules
покажет его.
Выход:
rule family="ipv4" source address="204.4.3.4" destination address="172.18.30.0/24" port port="80" protocol="tcp" accept
На самом деле команда добавляет его в зону по умолчанию, но вы никогда не говорили, что это не то, что вы хотели. Без флага --permanent
ничего относительно правила не появляется ни в одной из команд firewall-cmd --list-<attribute>
или где-либо в /etc/firewalld
. Единственная причина, которую я могу придумать для этого, заключается в том, что это эфемерно.