i.e. //*(): etc
我在尝试删除的文件夹中的多个文件中包含带有特殊字符 ( ) 的多行文本,如下所示。使用sed
and尝试了所有不同的解决方案,awk
但似乎没有一个喜欢//
。
// Some text with (something else) and a clack 6*5.
// Rest on the next line with some more
// etc. http://website.com/helloworld.php
// and just another line.
我所需要的只是从文件夹中的所有文件中搜索并删除此文本data
。
答案1
有几种方法可以//
使用以下方法来处理序列sed
反斜杠转义每个
/
实例sed '/^\/\//d' file
将其放入字符列表
/
中[...]
sed '/^[/]\{2\}/d' file
或(使用 GNU sed)
sed -r /^[/]{2}/d' file
将正则表达式分隔符更改为其他字符,以便按
//
字面意思处理序列sed '\%^//%d' file
答案2
这里有3种方法。
使用海湾合作委员会
您可以将其用作
gcc
预处理器来删除 C/C++ 文件中的注释。例子
$ cat test.c #define foo bar foo foo foo #ifdef foo #undef foo #define foo baz #endif foo foo // Some text with (something else) and a clack 6*5. // Rest on the next line with some more // etc. http://website.com/helloworld.php // and just another line.
要删除评论:
$ gcc -fpreprocessed -dD -E test.c # 1 "test.c" #define foo bar foo foo foo #ifdef foo #undef foo #define foo baz #endif foo foo
可以调整使用
find . -iname "*.c"
来查找所有.c
文件并在它们上运行上述内容,这将是一种方法。使用
stripcmt
有一个工具叫条带(即删除注释)您可以用它来做您想做的事情。
使用 Perl
您还可以使用此 Perl CPAN 模块通过自定义脚本删除注释。 CPAN 模块称为:正则表达式::通用::注释。 CPAN 页面上有有关如何执行此操作的示例。
答案3
您也可以只使用grep
:
grep -v // file
打印-v
的行与给定的模式不匹配。
或者perl
:
perl -ne 'print unless m#^//#;' file
或者
perl -ne 'next if m#^//#; print' file