Несмотря на то, что это старая тема, я хотел бы поделиться этим ответом, в котором используется только одна команда sed:
sed '1,2p;/^[[:digit:]]/!d;' file
Он сохраняет две первые строки (заголовок и подчеркивание ), затем удаляет все строки, которые не начинаются с цифры.
Невозможно вызвать функцию из двоичного файла/библиотеки C непосредственно из оболочки. Некоторые языки поддерживают это (, например Python с ctypes ), но я не знаю подобного варианта для bash (или других оболочек ).
Вам нужно будет использовать параметры командной строки и вызвать программу на C с параметром/аргументом, который указывает вашей программе вызывать определенную функцию.
Итак, для вашего примера вам нужно сделать что-то вроде
int main(int argc, char *argv[]) {
if (argc != 2) {
printf("Argument expected\n");
return 1;
}
if (strcmp (argv[1], "funcA") == 0)
funcA();
}
И затем вы можете вызвать его из оболочки, например
$./a.out funcA
Congrats..!! This is function A...!!
Если вы хотите немного изменить свой код, добавив вызов функции exit
(, например.exit(0);
)в конце функций, вы можете скомпилировать свой код, передав опцию -e funcA
компоновщику, чтобы в этом случае сделать их точку входа funcA
.
Предполагая, что файл вызывается foo.c
, вы можете иметь следующий сценарий оболочки, который выполняет функцию funcA
из файла foo.c
при вызове call foo.c funcA
из сценария оболочки.
call() {
cc -Wl,-e"$2" $1 &&./a.out
}