Проблема в вашем примере не в блокировке, а в ошибке разрешения. apt
пытается прочитать/записать файл (/var/lib/apt/lists/lock
), для которого у него нет разрешения на чтение/запись.
Посмотрите на chown
, владение файлом и что такое пользователь (в системе Unix ).
Между прочим, этот файл используется для блокировки (для предотвращения одновременного доступа двух apt
к базе данных apt ).
Команда
sed -en "/^#@/,/#@@/p" -e 's/[#@]*//' file
, скорее всего, выдаст ошибку, потому что -en
попытается применить выражение n
к файлу /^#@/,/#@@/p
. Если вы хотите комбинировать -e
с другими параметрами,вы должны поместить аргумент выражения после -e
как -ne "/^#@/,/#@@/p"
или полностью разделить их как-n -e "/^#@/,/#@@/p"
Однако похоже, что вы хотите применить подстановочную команду к адресуемым строкам и , а затем напечатать их, что на самом деле является одним выражением:
$ sed -n '/^#@/,/#@@/s/^#@*//p' file
text title
text line
text line
Чтобы также удалить ведущие пробелы:
$ sed -n '/^#@/,/#@@/s/^#[@ ]*//p' file
text title
text line
text line