用grep时,发现一个怪异的问题。
背景:grep -E表示用扩展的正则表达式。grep -P 表示用perl正则表达式,区别:http://www.cnblogs.com/wangkangluo1/archive/2012/04/13/2446021.html
测试文件如下:
MAX_STAY_TIME 103299 52 2923 SLIDE_BOTTOM 101047 0 2 MAX_STAY_TIME 103299 53 2861
用例1:
grep -P '[[:space:]]SLIDE_BOTTOM[[:space:]]' temp grep -P '\sSLIDE_BOTTOM\s' temp
grep -P '[\n]SLIDE_BOTTOM[[:space:]]' temp 结果: MAX_STAY_TIME 103299 52 2923 SLIDE_BOTTOM 101047 0 2
用例2:
grep -E '[[:space:]]SLIDE_BOTTOM[[:space:]]' temp 结果: 空
用例3:
grep -E 'SLIDE_BOTTOM[[:space:]]' temp 结果: SLIDE_BOTTOM 101047 0 2
分析上面三个例子,可以得出grep -P在处理换行符时,有一个小问题,会把上一行的换行符也算成下一行的开头。