我有一个包含多行的大文件,我想转义(删除)具有以下条件之一的所有行:
- 行以
/*!
or 开头'/*!
- 行以 开头
#
,然后是一个或多个 (+) 空格、数字或数字。
我使用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