以下是我的測試用例。我試圖匹配並打印在第一個=
之後發生的字符串,忽略了前導空白和尾隨空白。我的問題是我不知道如何match up to trailing white spaces or the end of line
。它似乎與領先的工作很好,但尾隨的空間在某種程度上是有問題的。我猜它有事情做與優先順序,但我不能由我自己看着辦吧:如果我把這些空間作爲空間的__
代替[[:blank:]]*
表達作品BRE如何匹配行結束處的空白空間?
echo "TITLE= B=ack=To ian " | sed -n -e 's/[^=]*=[[:blank:]]*\(.*\)[[:blank:]]*$/\1/p' | od -tx1 -tc
0000000 42 3d 61 63 6b 3d 54 6f 20 69 61 6e 20 20 20 0a
B = a c k = T o i a n \n
有趣,但它失去它的靈活性:
echo "TITLE= B=ack=To ian " | sed -n -e 's/[^=]*=[[:blank:]]*\(.*\) $/\1/p' | od -tx1 -tc
0000000 42 3d 61 63 6b 3d 54 6f 20 69 61 6e 0a
B = a c k = T o i a n \n
ps,我對如何用Perl的正則表達式或其他工具不感興趣,我想了解爲什麼會發生這種情況。
感謝
嘗試使用'\ s *'而不是'[:blank:] *'。 '\ s'不僅與製表符和空格相匹配,而且還包含換行符。查看[此列表](http://en.wikipedia.org/wiki/Regular_expression#Character_classes)。 – Broxzier
謝謝,但我試圖讓我的腳本POSIX兼容和'\ s *'不是POSIX據我所知。 – user3014381
然後嘗試'[:space:]'。 – Broxzier