删除包含双正斜杠的所有行

时间:2015-01-20 05:09:59

标签: bash shell sed grep

我有一个示例文本文件,其中包含如下所示的行:

/home0/abc/xyz/Example1.java:               //  log.error("error" , exception);
/home0/abc/xyz/Example2.java:                   log.error("error" , exception);
/home0/abc/xyz/Example3.java:               //  log.error("error" , exception);
/home0/abc/xyz/Example4.java:                   log.error("error" , exception);

如何在shell脚本中删除包含双正斜杠(即包含注释的行)的所有行。

我的最终输出应如下所示:

/home0/abc/xyz/Example2.java:                   log.error("error" , exception);
/home0/abc/xyz/Example4.java:                   log.error("error" , exception);

3 个答案:

答案 0 :(得分:3)

你可以使用grep,

grep -v '//' file

来自grep --help

-v, --invert-match        select non-matching lines

通过sed,

sed '/\/\//d' file

上面的sed命令会删除那些包含两个正斜杠的行。上述sed的语法是sed '/regex/d' file。因为/用作sed分隔符,所以按顺序转义正则表达式中的斜杠以匹配文字正斜杠。

通过awk,

awk '!/\/\//' file

!否定模式并强制awk打印不包含//

的行

答案 1 :(得分:2)

在grep中你应该像这样使用-v选项

grep -v pattern filename

-v -used用于反转模式匹配。

在sed

  sed '/\/\//d' filename

d - 删除模式匹配的行。

答案 2 :(得分:1)

在vi或vim编辑器中,执行以下操作:

:g/\/\//d

是:冒号,g,斜线,反斜线,斜线,反斜线,斜线,斜线,d