grepを使用して他の文字列内にない文字列を検索する

grepを使用して他の文字列内にない文字列を検索する

テキストファイルがあります。多肢選択式試験です。何百もの質問があり、各質問にはABCDで始まり、1行に1つずつ4つの答えの選択肢があります。

各A.(およびB.など)の後にはスペースが続き、その直後には質問テキストの最初の文字が続く必要があります。このように:

++++++++++++++++++++++++++++++++
This is my question text?
A. Choice 1
B. Choice 2
C. Choice 3
D. Choice 4
++++++++++++++++++++++++++++++++

答えの選択の最初の文字の前に、1つのスペース(別の文字または2つ以上のスペース)以外の文字があるA.で始まるすべての行を探したいと思います。その後、BCとDにも同じことを行います。

/編集する

「OK」行と「Not OK」行を区別したいです。

A.<space><any char not a space> is OK.

例えば

A.ABC not OK.
A.123 not OK.
A.  ABC not OK

A. 123 OK.
A. ABC OK.

「異常な」行をすべて探したいです。

/編集終了

ベストアンサー1

grep -E '^[ABCD]\.([^ ]|  )' file

A.これにより、ファイルから始まる、またはB.後にスペース以外の文字、または2つのスペースが続くすべての行C.が抽出されます。D.

式は拡張正規表現(ANDの交互のため|)なので、-Ewithを使用しますgrep

おすすめ記事