使用sed删除包含斜杠的行/

时间:2016-06-08 19:17:14

标签: bash sed

我知道在某些情况下,/以外的其他字符可用于sed表达式:

sed -e 's.//..g' file//替换为file中的空字符串,因为我们使用.作为分隔符。

但是,如果您要删除//comment中与file匹配的行?

,该怎么办?

sed -e './/comment.d' file返回

sed: -e expression #1, char 1: unknown command: `.'

2 个答案:

答案 0 :(得分:6)

您可以使用静止使用备用分隔符:

sed '\~//~d' file

只需逃离定界仪的开始。

答案 1 :(得分:0)

要删除带有注释的行,请从下面的这些Perl单行代码中选择。它们都使用app.component('child-component', { mounted() { console.log(this.foo) // 'bar' } }) 形式的正则表达式定界符,而不是更常用的m{}。这样,您就不必像这样//来转义斜线,这会使双斜杠的可读性降低:\/

创建示例输入文件:

/\/\//

删除以以注释开头的行:

echo > in_file \
'no comment
// starts with comment
   // starts with whitespace, then has comment
foo // comment is anywhere in the line'

输出:

perl -ne 'print unless m{^//}' in_file > out_file

删除以可选空格开头,后跟注释的行

no comment
   // starts with whitespace, then has comment
foo // comment is anywhere in the line

输出:

perl -ne 'print unless m{^\s*//}' in_file > out_file

删除在任何地方有评论的行

no comment
foo // comment is anywhere in the line

输出:

perl -ne 'print unless m{//}' in_file > out_file

Perl单行代码使用以下命令行标志:
no comment :告诉Perl在代码中而不是在文件中查找代码。
-e:一次循环输入一行,默认情况下将其分配给-n

另请参见:
perldoc perlrun: how to execute the Perl interpreter: command line switches
perldoc perlre: Perl regular expressions (regexes)
perldoc perlrequick: Perl regular expressions quick start