

以下のようなテキストがある時に、

[code]

    A-7-2
    D-1-5
    D-1-5
    A-1
    D-1-5,A-2-5
    G-5-21,B-3,A-2-5
    
[/code]

「アルファベット-数字-数字」以外（ここでは `A-1` と `B-3`）のみが抽出されるようにしたいです。  
どのような正規表現を用いれば良いでしょうか。よろしくお願いします。


CC BY-SA 4.0
2019-10-16T04:15:50.037
59734
2019-10-16T07:25:34.727
2019-10-16T07:25:34.727
36222
question
正規表現
アルファベット-数字-数字 の構成以外の文字列を抽出したい


1)カンマ(`,`)区切りのデータを考慮しない場合

nekketsuuuさんのご指摘どおり、以下のような単純な文字列抽出では

[code]

    cat テキストファイル | egrep -v '^[A-Z]-[0-9]-[0-9]$'
    
[/code]

5行目の`D-1-5,A-2-5`も抽出されてしまいます。

2)カンマ(`,`)区切りの行のすべての項目が条件に合致したときは抽出しない場合

[code]

    cat テキストファイル | gawk '
    {
        patern = "^[A-Z]-[0-9]-[0-9]$"
        split($0, a, ",")
        hit = 0;
        for(i in a){
            if(match(a[i] , patern)){
                hit = 1
            }
        }
        if(!hit){
            print $0
        }
    }
    '
    
    
[/code]

実行環境は以下です。  
Ubuntu 18.04.3 LTS  
※WSL下です  
gawk GNU Awk 4.1.4  
egrep grep (GNU grep) 3.1  
bash GNU bash, バージョン 4.4.20(1)-release (x86_64-pc-linux-gnu)


CC BY-SA 4.0
2019-10-16T05:46:08.803
59739
2019-10-16T07:11:25.247
2019-10-16T07:11:25.247
35558
35558
59734
answer