Удалить все вхождения шаблона, кроме первого.

Использование живого ISO без сохранения означает, что основная файловая система доступна только для чтения -, поэтому ничего нельзя изменить или «сломать» навсегда. Это также означает, что все изменения (новые файлы и данные )находятся в оперативной памяти и теряются при перезагрузке/выключении.

Сохранение ваших личных данных вручную может улучшить привычки резервного копирования...

Если у вас достаточно оперативной памяти для использования параметра toram, все операции чтения и записи файлов будут выполняться со скоростью оперативной памяти, возможно, 2 ГБ -5 ГБ в секунду, что намного быстрее, чем обычный компакт-диск/DVD/жесткий диск или твердотельный накопитель.


Часть вопроса о «лучшем шифровании» на самом деле слишком широка, но просто используйте значения по умолчанию, которые используют большие дистрибутивы :GPG, LUKS,eCryptFS

0
25.02.2020, 19:40
3 ответа
sed '/^import Foo$/{x;/^$/!d;g;}'

Как это работает :В каждой строке, соответствующей шаблону

  • x:поменять местами строку с пробелом
  • /^$/!d:если то, что только что было извлечено из области хранения, не пусто, т.е. поскольку там было сохранено предыдущее совпадение, удалите шаблон и перейдите к следующей строке
  • g:иначе (т.е. первый раз через )скопировать сохраненную строку обратно. Он будет напечатан по умолчанию
4
28.04.2021, 23:22

С реализацией GNU sed(, которую вы, вероятно, используете, так как уже используете этот 2gGNU-изм ), вы можете сделать:

sed '0,/import Foo/!{//d}' < file

Это удалит все строки, содержащие import Foo, кроме первой. Замените шаблон на /^import Foo$/, если вы хотите удалить только те строки, которые точно соответствуютimport Foo.

Вы также можете использовать awkздесь:

awk '!/import Foo/ || !n++' < file
4
28.04.2021, 23:22

Если ваша версия sedпозволяет это сделать, попробуйте

sed -z 's/import Foo//2g' file
1
28.04.2021, 23:22

Теги

Похожие вопросы