perl -pe 's/(b+)(a+)/$2$1/ while /ba/' data.file
до тех пор, пока запись содержит «b», за которой следует «a», мы продолжаем переворачивать «острова» пчел и да в текущей записи.
perl -F\(b+\) -lne '
my @A;
splice @A, (/b/ ? @A : 0), 0, $_ for @F;
print @A;
' data.file
Мы инициализируем массив @A для каждой прочитанной записи/строки. Поля, вырезанные из записи (хранящиеся в @F), проверяются, и когда они содержат «b», помещаются в конец массива, в противном случае размещенного с начала. Наконец, мы печатаем массив.