Это гораздо более сложный sed
скрипт, но он работает без цикла. Вы знаете, просто ради разнообразия:
sed 'h;s/[^\x27]*\x27\(.*\)/\n\x27\1/;s/ //g;x;s/\([^\x27]*\).*/\1/;G;s/\n//g'
Создает копию строки, разбивает одну (которая станет второй половиной) в первой одинарной кавычке, отбрасывая первую половину, заменяет все пробелы во второй половине, меняет местами копии, разбивает другую, отбрасывая вторая половина, объединяет их вместе и удаляет новые строки, используемые для разбиения, и строку, добавленную командой G
.
* * 1008 Edit: * * 1010
Чтобы выбрать определенные линии для работы, вы можете использовать некоторые критерии выбора. Здесь я указал, что строка должна содержать знак равенства и как минимум две одинарные кавычки:
sed '/.*=.*\x27.*\x27.*/ {h;s/[^\x27]*\x27\(.*\)/\n\x27\1/;s/ //g;x;s/\([^\x27]*\).*/\1/;G;s/\n//g}'
Вы можете использовать любое регулярное выражение для включения и исключения в соответствии с вашими потребностями.