Как правильно связать несколько команд sed

Проблема в вашем примере не в блокировке, а в ошибке разрешения. aptпытается прочитать/записать файл (/var/lib/apt/lists/lock), для которого у него нет разрешения на чтение/запись.

Посмотрите на chown, владение файлом и что такое пользователь (в системе Unix ).


Между прочим, этот файл используется для блокировки (для предотвращения одновременного доступа двух aptк базе данных apt ).

0
05.10.2020, 22:42
1 ответ

Команда

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
1
18.03.2021, 22:59

Теги

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