grepを使用して誤ったタイトルを識別する

grepを使用して誤ったタイトルを識別する

各ヘッダーの形式には、次のような数百の文書があります。

# 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内の部分は}ドットで始まり、特定の数の文字とスペースを含めることができます。

おすすめ記事