Уже была попытка ответить на этот вопрос, Обнаружение и объединение многострочной структуры с использованием sed , но ни один из ответов не сработал для моего конкретного случая.
У меня есть программа, написанная на c, которая имеет два вида многослойных структур. Мне нужно выяснить, как использовать утилиту unix sed для сжатия этих определений структуры в одну строку, а затем сделать две копии, чтобы всего было три копии определения структуры.
Вот мой пример программы на c:
#include <stdio.h>
#include <stdlib.h>
struct node {
int val;
struct node *next;
};
typedef struct {
int numer;
int denom;
} Rational;
int main()
{
struct node head;
Rational half, *newf = malloc(sizeof(Rational));
head = (struct node){ 5, NULL };
half = (Rational){ 1, 2 };
*newf = (Rational){ 2, 3 };
return 0;
}
Я знаю, что команда sed будет искать что-то в размере sed '/ *struct .*/N;' test.c
, чтобы найти структуру, а затем оператор перехода, чтобы добавить остальные строки определения структуры к одной строке.