複数行を含む大容量ファイルがあり、次のいずれかの条件に該当するすべての行をエスケープ(削除)したいと思います。
- 行
/*!
はまたはで始まります。'/*!
- 行はで始まり
#
、その後に1つ以上の(+)スペース、数字、または数字が続きます。
以下を使用していますが、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
^'
パターンの周りに一重引用符を挿入して使用するのは難しく、最初の部分に二重引用符を使用し、その後パターン部分に一重引用符を使用しました。 2番目の例では、^
文字通りの意味が維持され、開始前に'
エスケープされます。\'
'
POSIX文字クラスを使用でき、[:alnum:]
タブ[a-zA-Z0-9]
とスペースを一致させるには、次のものを使用できます[:blank:]
。
grep -vE "^'"'?/\*!|^#[[:blank:][:alnum:]]+' file