我有一个 cpp 文件,我想使用 sed 命令删除此 cpp 文件内的所有系统函数
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\(
的默认形式不同,awk 中是正则表达式活动的,我们必须用反斜杠对其进行转义才能匹配实际的。)grep
sed
(
(