sed -i -e '/^#!/p' -e '/^#/d' file
Это будет проходить через файл построчно и находит строку, начинающуюся с #!
будет напечатано первым выражением. Затем он будет удален из пространства шаблонов вторым выражением (т. е. он не будет напечатан через секундураз командой по умолчанию p
, которая действует, когда не используется sed -n
).
Строка, начинающаяся только с #
, будет игнорироваться первым выражением, но удаляться вторым выражением.
Любая другая строка будет напечатана командой по умолчанию p
.
Чтобы разрешить пробелы перед #
(а также удалить эти строки):
sed -i -e '/^[[:blank:]]*#!/p' -e '/^[[:blank:]]*#/d' file
Выражение [[:blank:]]
будет соответствовать пробелу или табуляции. персонаж.
Как упомянул Стефан, это комментарии, изменение p
на b
в первом выражении позволит сценарию sed
продолжить работу со следующей строкой ввода без учета второе выражение, если первое выражение совпадает. Команда b
переходит к предопределенной метке или к концу сценария sed
, если метка не указана. Это будет оптимизация.
sudo setfattr -n security.selinux -v u:object_r:system_file:s0 'path/fileName'
вам может потребоваться сначала установить attr
и посмотреть официальные документы