我想提取在/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' –