С помощью GNUsed
:
sed '0,/^AAA$/b;//d'
То есть пусть все через(b
ответвляется какcontinue
)до первогоAAA
(с 0-й строки (, то есть еще до первой строки )и первой совпадающей/^AAA$/
(который может быть первой строкой )), а затем для остальных строк удалить каждое вхождениеAAA
(пустой шаблон //
повторно использует последний шаблон ).
GNU sed
необходим для адреса 0
(и возможности иметь другие команды после b
в том же выражении, хотя это можно было бы легко обойти в других реализациях, используя два -e
выражения)
Сawk
:
awk '$0 != "AAA" || !n++'
(или для шаблона регулярного выражения:awk '!/^AAA$/ || !n++'
)
сокращение от:
awk '! (&0 == "AAA" && count > 0) {print; count++}'
apt update; apt upgrade
Если это не сработает, то придется делать это вручную. Это perl-скрипт. Найдите, где находится восходящий поток, и поместите его в /usr/local/bin
. (Вы также можете рассмотреть stow
. )Затем проверьте, что ваш $PATH
, ставит приоритет на/usr/local/bin
(Скорее всего ). Затем протестируйте.
Будьте осторожны, чтобы убедиться, что вы не загружаете какое-либо вредоносное ПО.