我想提取在/etc/lvm/lvm.conf
中配置的筛选规则,如filter = [ "r|/dev/sda|" ]
。我想sed
返回"r|/dev/sda|"
。所以,我曾尝试下面的脚本:Sed未能匹配非空白字符与字符分类
echo ' filter = [ "r|/dev/sda|" ] ' | sed -r 's:^\s*filter\s*=\s*\[\s*([^\s]+)\s*\]:\1:g'
但它没有工作,脚本返回filter = [ "r|/dev/sda|" ]
。 我已经尝试了一些线上正则表达式测试仪,该组已被正确匹配。
但是,如果我用.+
代替[^\s]+
,它就可以工作。
不是[^\s]+
是指多个非空白字符?
有什么想法吗?
这些速记不能否定括号表达式内部使用。 '[^ [:space:]]'会起作用。 –
是的!谢谢你,非常感谢你,@WiktorStribiżew – vesontio
万一你用'grep'确定:try'grep -oP'filter。* \ K“。*?'''inputfile' –