может быть лучший способ решить эту проблему, например awk, может быть, с tr.Однако, поскольку вы упомянули, что это домашнее задание, и оно должно быть выполнено sed, я написал следующие команды (одна строка: D).Обратите внимание, есть две «седь» команды.надеюсь, что это может быть принято.
команда для решения проблемы:
sed -rn '/^struct/{x;s/.*/#/g;x;p;n};
/\};/ {x;/#/{s/#//;x;p;n}};
x; /#/{x;p}' yourFile | sed -r ':a;N; s/\n//g;s/\};/&\n/g; ba;'
Теперь давайте проведем тест, я создал файл с именем tc и просмотрите содержимое:
kent$ cat t.c
struct apple1 {
int type, color;
Apple app;
};
// ... more code
// ... more code
// ... more code
// ... more code
function abc(para){
foo;
bar;
return ;
}
struct apple2 {
int type, color;
Apple app;
};
// ... more code
// ... more code
// ... more code
struct apple3 {
int type, color;
Apple app;
};
// ... more code
Теперь играйте в мои команды sed с tc baby:
kent$ sed -rn '/^struct/{x;s/.*/#/g;x;p;n};
/\};/ {x;/#/{s/#//;x;p;n}};
x; /#/{x;p}' t.c | sed -r ':a;N; s/\n//g;s/\};/&\n/g; ba;'
struct apple1 { int type, color; Apple app;};
struct apple2 { int type, color; Apple app;};
struct apple3 { int type, color; Apple app;};