如何删除具有不同起始模式的行?

如何删除具有不同起始模式的行?

我有一个包含多行的大文件,我想转义(删除)具有以下条件之一的所有行:

  1. 行以/*!or 开头'/*!
  2. 行以 开头#,然后是一个或多个 (+) 空格、数字或数字。

我使用egrep -v如下,但我所有的尝试都失败了:

cat File.log | egrep -v '^(/*!)|^(#[ a-zA-Z0-9]+)'

答案1

你可以试试这个grep

$ grep -Ev "^'?/\*!|^#[ [:alpha:][:digit:]]+" input_file

答案2

你可以使用

grep -vE "^'"'?/\*!|^#[ a-zA-Z0-9]+' file

或者

grep -vE ^\''?/\*!|^#[ a-zA-Z0-9]+' file

^'在模式周围插入和使用单引号很棘手,因此我在第一部分使用双引号,在后面的模式部分使用单引号。在第二个示例中^,保留原义并'转义到\'开头之前'

您可以使用 POSIX 字符类[:alnum:][a-zA-Z0-9]如果您想匹配制表符和空格,您可以使用[:blank:]

grep -vE "^'"'?/\*!|^#[[:blank:][:alnum:]]+' file

相关内容