Мне не на 100% ясно, что вы хотите. Может быть, заменить appX и appY на:
sem --id myidXY --fg appX
sem --id myidXY --fg appY
Что можно сделать так:
... | parallel eval '{= s/(app(X|Y))/sem --id appXY --fg $1/ =}'
Это должно убедиться, что работает только один appX
или appY
; но пусть побежит appZ
s.
{= =}
интерпретируется как код Perl.
s/(app(X|Y))/sem --id appXY --fg $1/
заменяет appX
или appY
на sem --id appXY --fg
, за которым следует либо appX
или appY
в зависимости от того, что было найдено. Если ничего не найдено, значение не изменяется.
(echo appX; echo appX; echo appX;
echo appY; echo appX; echo appV;
echo appX; echo appZ) |
parallel eval '{= s/(app(X|Y))/sem --id appXY $1/ =}'
Если вы не это имеете в виду, отредактируйте вопрос.