数据
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
逐行处理输入,但不会自动打印每一行。
我不确定您的目标是什么,因此您可能需要调整正则表达式,但一般方法应该可行。