Я хочу, чтобы правила фильтрации были настроены в /etc/lvm/lvm.conf
, например filter = [ "r|/dev/sda|" ]
. Я хочу sed
, чтобы вернуть "r|/dev/sda|"
. Так что я попробовал следующий сценарий:Не удалось совместить символы без пробелов с символьным классом
echo ' filter = [ "r|/dev/sda|" ] ' | sed -r 's:^\s*filter\s*=\s*\[\s*([^\s]+)\s*\]:\1:g'
Но это не сработало, то сценарий вернулся filter = [ "r|/dev/sda|" ]
. Я пробовал несколько тегов регулярных выражений, группа была правильно подобрана.
Однако, если я заменяю [^\s]+
на .+
, он работает.
Не имеет значения [^\s]+
более одного символа пробела?
Любая идея, пожалуйста?
Этих Shorthands не может быть использован внутри отрицаний выражений брекета. '[^ [: space:]]' будет работать. –
Да! спасибо, спасибо, большое спасибо @ WiktorStribiżew – vesontio
, если вы в порядке с 'grep': попробуйте фильтр' grep -oP '. * \ K ". *?"' inputfile' –