过滤掉行中的组合选项

过滤掉行中的组合选项

数据

Life by cerebral flow is coming to:---1) Prolonged jumping rate---2) Small holiday course---3) Hello this world---4) Dance rock coffee---5) Therapy unproven---Choose right answer:|1,3,5|2,5|1,2,3,5   5
...
Life by cerebral flow is coming to:---1) Prolonged jumping rate---2) Small holiday course---3) Hello this world---4) Dance rock coffee---5) Therapy unproven---Choose right answer:|1.,3.,5|2,5|1,2.,3,5    5

每行都包含这样的内容[Sentence]:---1)...(options)---n) ---[choose right ansewr]:|options| \tab [correct answer]

我想找到所有没有匹配的句子|[1-5],[1-5]?|,或者|[1-5].,[1-5]?|因此允许也|1.,||1,|

我的 Perl 伪代码

perl -pe '  
                 # read the file a record at a time and auto-print (-p)
    s/[0-5],[0-5]?//;    # remove those lines having the match
    s/[0-5].,[0-5]?//;    # remove those lines having the match
' file

其中问题是删除具有这些匹配项的整行。我可以匹配这些东西,但要说的是:用匹配删除整行是挑战。

如何删除那些匹配的行?

答案1

使用-n而不是-p

perl -ne 'print unless /[0-5],[0-5]?|[0-5].,[0-5]?/' file

-n逐行处理输入,但不会自动打印每一行。

我不确定您的目标是什么,因此您可能需要调整正则表达式,但一般方法应该可行。

相关内容