Если вас устраивает такая структура, как:
string1
string2
string3
, я бы просто заменил вам разделители на новую строку. Что-то вроде этого должно вас приблизить:
sed "s/\(aaa\)\|\(bbb\)/\n/g" test.txt
Edit
Как указано ниже @clk, мой первый ответ может давать двойные символы новой строки. Переход на что-то вроде:
sed "s/\(\s\)\?aaa\(\s\)\?/bbb/g" test.txt | sed "s/b*//g"
для меня дает:
string1 string2 string3
, который также работает точно так же, когда вводится, например:
echo 'aaa string1 bbb aaa string2 bbb aaa string3 bbb' | sed "s/\(\s\)\?aaa\(\s\)\?/bbb/g" | sed "s/b*//g"
Не очень красивый ответ, но быстрый и грязный и дает вам формат, который вы просите.