各ヘッダーの形式には、次のような数百の文書があります。
# Some title here {.WORD}
grep
私はこの規格に従わないすべてのヘッダーを識別したいと思います。ただし、#でのみ始まる行は検出されないでください。
## | OK
# Lorem .tip} | NOT OK
# LIPSUM {.tip | NOT OK
### Lipsum {.hello word} | OK
# Title | NOT OK
######## Title {.challenge} | OK
この状況を解決するために、次の正規表現を作成しました。
^##* .*(?<!{.*})$
しかし、パーサーは「lookbehindアサーションが固定長ではありません」と文句を言います。この問題を解決するために上記の正規表現を修正できますか?
ベストアンサー1
$ grep -vE '^#+( [ [:alpha:]]+ \{\.[ [:alpha:]]+\})?$' file
# Lorem .tip}
# LIPSUM {.tip
# Title
拡張正規表現は「OK」行と一致します。-v
一致しない行を表示するように要求します。
このモードでは、行は#
特定の数の文字で始まる必要があります。行の残りの部分はオプションですが、存在する場合はスペースで始まり、その間にスペースを含めることができる複数の文字を含める必要があり、その前に最後のスペースを含める必要があります{
。{
and内の部分は}
ドットで始まり、特定の数の文字とスペースを含めることができます。