Удалите все системные функции с помощью команды 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, и мы должны экранировать его обратной косой чертой, чтобы соответствовать фактическому (
.)