У меня есть файл, где начинается строка:
OCCUPY 12 EVERY PIC 32(12). SUNNY
OCCUPY 45 EVERY PIC X(21). SUNNY
и некоторые строки могут быть разбиты на две строки:
1 OCCUPY 12 EVERY PIC 32(12). SUNNY
2 OCCUPY 45 EVERY SUNNY
3 PIC X(21). SUNNY
И желаемый результат:
PIC 32(12) OCCUPY 12 EVERY. SUNNY
PIC X(21) OCCUPY 45 EVERY. SUNNY
Итак, мне нужно собрать разделенные строки в один ряд и поменять местами слова.
Итак, для тех, кто находится в одном ряду, я использую команду:
sed 's/\(OCCUPY.*EVERY\) *\(PIC *[^ }*\)\./\2 \1./'
sed -Ez 's/(OCCUPY)\s+([0-9]+)\s+(EVERY)\s+(PIC)\s+([^)]+\))/\4 \5 \1 \2 \3/g'
Эти команды работают, но только если строка находится в одной строке, а также она сдвигает слово SUNNY, а точка находится на расстоянии одного пробела. Слово СОЛНЕЧНОЕ должно быть в одном и том же поле. Итак, неверный вывод:
PIC 32(12) OCCUPY 12 EVERY. SUNNY
PIC X(21) OCCUPY 45 EVERY . SUNNY
Любая помощь будет оценена !!