Переформатирование строк

Есть множество файлов примерно такого содержания:

status:
   on:
      descrition('Code 200')
      recommendations('')
x64 = false
x86 = true

Суть задачи сводится к тому, чтобы объединить две последние строки (с последующим удалением) и вставить во вторую строку. Иначе говоря должно получиться следующее:

status:
   on: x86 = true, x64 = false
      descrition('Code 200')
      recommendations('')

Последнее (вставка во вторую строку) трудностей не вызывает, могу поступить так:

sed -i.bak '$s/$/\n <наша строка>/' file

А вот с первым пока стопор.


Ответы (1 шт):

Автор решения: Ainar-G

Если допускается использование AWK, то задача «объединить две последние строки и вставить во вторую» решается довольно просто:

BEGIN {
    i = 0;
}

{
    lines[i] = $0;
    i++;
}

END {
    n = length(lines);
    extra = lines[n - 2] ", " lines[n - 1];
    lines[1] = lines[1] " " extra;

    delete lines[n - 2]
    delete lines[n - 1]

    for (i in lines) {
        print(lines[i]);
    };
}

Результат:

status:
   on: x64 = false, x86 = true
      descrition('Code 200')
      recommendations('')
→ Ссылка