Удалите все системные функции с помощью команды sed

У меня есть файл cpp. Я хочу удалить все системные функции внутри этого файла cpp, например, с помощью команды sed.

int a;
cin>>a;
system(a);
system("dadad");
system('dad');

Я хочу удалить все системные функции в приведенном выше коде, есть ли способ решить эту проблему с помощью команды sed

1 ответ

Это может быть сложно, но все ваши примеры показывают одну команду на строку с system команда, начинающаяся в начале строки. В этом случае это относительно просто. Вот три метода:

С помощью grep:

$ grep -v '^system(' file.cpp
int a;
cin>>a;

Регулярное выражение ^system( соответствует линиям, которые начинаются с system(, -v опция говорит grep удалить строки, которые совпадают.

С помощью sed:

$ sed '/^system(/d' file.cpp
int a;
cin>>a;

d команда говорит sed удалить любую строку, которая соответствует регулярному выражению ^system(,

С помощью awk:

$ awk '!/^system\(/' file.cpp
int a;
cin>>a;

В awk, ! это отрицание и !/^system\(/ печатает любую строку, которая не соответствует регулярному выражению ^system\(, (В отличие от стандартных форм grep а также sed, ( является активным регулярным выражением в awk, и мы должны экранировать его обратной косой чертой, чтобы соответствовать фактическому (.)

Другие вопросы по тегам