Одним из примеров этого могут быть системные единицы, которые ссылаются на пути в имени. В таких единицах /
заменяется на -
(, а ведущий -
опускается ). Например, единица монтирования для /home/muru
будет называться home-muru.mount
. Точно так же я могу видеть другие имена юнитов на основе пути -, когда я запускаюsystemctl list-units
:
sys-devices-platform-soc-3f980000.usb-usb1-1\x2d1-1\x2d1.5-1\x2d1.5:1.0-host0-target0:0:0-0:0:0:0>
sys-devices-platform-soc-3f980000.usb-usb1-1\x2d1-1\x2d1.5-1\x2d1.5:1.0-host0-target0:0:0-0:0:0:0>
sys-devices-virtual-misc-rfkill.device loaded active plugged /sys/devices/virtual/misc
sys-devices-virtual-tty-ttyprintk.device loaded active plugged /sys/devices/virtual/tty/
sys-module-configfs.device loaded active plugged /sys/module/configfs
sys-subsystem-net-devices-eth0.device loaded active plugged SMSC9512/9514 Fast Ethern
sys-subsystem-net-devices-wlan0.device loaded active plugged /sys/subsystem/net/device
Во многих из них последний компонент пути, который будет частью, заданной %j
, может быть полезен внутри модуля. Я не знаю, действительно ли кто-то из них использует это имя, но может быть удобно, например, использовать %j
, чтобы получить имя пользователя для генератора единиц монтирования для каталогов в /home
или в /run/user
, или похожие.
Предполагая, что % Blah blah %
не может пересекать границу строки и что Blah blah
не содержит %
, вы можете использовать
sed 's/%[^%]*%//' file
Добавьте модификатор g
, если вам нужно заменить более одного экземпляра шаблона в строке.