man grep的時候有一個-P,文檔上的英文:
-P, --perl-regexp
Interpret PATTERN as a Perl regular expression. This is highly experimental and grep -P may warn of nimplemented features.
這意思是,-P 可以讓grep使用perl的正則表達式語法,因為perl的正則更加多元化,能實現更加復雜的場景。
最典型的用法是,匹配指定字符串之間的字符。 比如,我們想在一句話(Hello,my name is aming.)中匹配中間的一段字符串(my name is) 可以這樣寫正則表達式。
echo "Hello, my name is aming."|grep -P '(?<=Hello, ).*(?= aming.)'
如果只需要匹配到的部分,還可以加上-o選項
echo "Hello, my name is aming."|grep -Po '(?<=Hello, ).*(?= aming.)'
根據這個思路,我們可以去匹配IP地址
ifconfig eth0 |grep -Po '(?<=addr:).*(?= Bcast)'