/ / Perl: Съвпадение на низ и изтриване на всички, освен първото събитие - regex, perl

Perl: Съвпадение на низ и изтриване на всички, но не на първо място - regex, perl

Имам файл в perl, който има следното съдържание

abc
text1
text2
text3
abc
text4
text5
abc
abc

Крайна продукция:

abc
text1
text2
text3
text4
text5

Искам да използвам perl един лайнер или скрипт, за да запазя 1-ви abc и да изтрия останалите. В моя скрипт използвам оператор за съвпадение на модели m?/abc/ за да намерите първия модел, но не можете да измислите начин да изтриете останалите. Моля, помогнете ми със същото

Отговори:

3 за отговор № 1

Ако приемем, че искате да изтриете целия ред, съдържащ втората и следващите събития на abc:

perl -ne "print if !/abc/ || !$n++" < infile > outfile

Ако искате да изтриете редове, съдържащи abc и нищо друго, промяна /abc/ да се /^abc$/.