только с sed, но вы должны выбрать последовательность символов, которая никогда не будет в ваших данных.
( echo 'zzzaaaaadddd' ;
echo 'ssssaaaaajaaaaakaaaaa';
echo 'ssssaaaaaaaaaakaaaaa'; ) | \
sed '/aaaaa.*aaaaa/ { s/aaaaa/_=|=_/; s/aaaaa/GGGGG/g; s/_=|=_/aaaaa/ }'
zzzaaaaadddd
ssssaaaaajGGGGGkGGGGG
ssssaaaaaGGGGGkGGGGG
объяснение:
_=|=_
, которой у вас никогда не будет _=|=_
на аааааНа данный момент вы очень близки к решению:
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="*.RData" \
--exclude="boring_dir/" \
--exclude="*/*" 1_counts/*.
Дело в том, чтоrsync
использует первый шаблон сопоставления , поэтому, включая все под another_dir
, вы фактически включаете скучные вещи и файлы.RData. Вам нужно только изменить порядок правил фильтрации:
rsync -r -v --dry-run --include="dir/" \
--exclude="*.RData" \
--exclude="boring_dir/" \
--include="dir/another_dir/***" \
--exclude="*/*" 1_counts/*.
Поскольку порядок имеет значение, люди помещают правила для исключения файлов по расширению в начале и правила для исключения всех файлов в конце .