目前,我有格式的文件,如下所示:桑達正則表達式^ *(尖點星號)不匹配正確
####<Oct 23, 2015 10:23:34 AM PDT> <ERROR> <com.foo.biz.jrules.ilog.RulesEngine> <BELC02NF206G3QN> <tcbiz2_1> <siteType=DOMESTIC> <catalina-exec-16> <sessionId=432407E73A6BFE1C4AFE8205ED386907> <clientIp=127.0.0.1> <com.foo.biz.jrules.ilog.RulesEngine.mapPricedSearch(?:?):priceRuleDesc=SNSDTA:PRO-18.612782:NOBTA>
####<Oct 23, 2015 10:23:34 AM PDT> <ERROR> <com.foo.biz.jrules.ilog.RulesEngine> <BELC02NF206G3QN> <tcbiz2_1> <siteType=DOMESTIC> <catalina-exec-16> <sessionId=432407E73A6BFE1C4AFE8205ED386907> <clientIp=127.0.0.1> <com.foo.biz.jrules.ilog.RulesEngine.mapPricedSearch(?:?):priceRuleDesc=SNSDTA:PRO-15.806297:NOBTA>
####<Oct 23, 2015 10:23:34 AM PDT> <ERROR> <com.foo.biz.jrules.ilog.RulesEngine> <BELC02NF206G3QN> <tcbiz2_1> <siteType=DOMESTIC> <catalina-exec-16> <sessionId=432407E73A6BFE1C4AFE8205ED386907> <clientIp=127.0.0.1> <com.foo.biz.jrules.ilog.RulesEngine.mapPricedSearch(?:?):priceRuleDesc=SNSDTA:PRO-4.2497005:NOBTA>
我試圖在priceRuleDesc=
期滿後和之前去掉一切最後的>
角色。目前,我試圖在我的Mac上測試sed中的正則表達式來完成此操作,但沒有多少運氣。
我使用的命令是:
cat ~/myapp/logs/tcbiz2_1.log | grep -i priceRuleDesc | sed -E 's/^.*priceRuleDesc=/foo/'
令人驚訝的在我的sed命令時,^.*priceRuleDesc=
不不匹配就行了替代一切,直到然後用foo
。我懷疑^.*
只是走到線的盡頭,沒有足夠的智能停止當priceRuleDesc
發生。我發現另一個與Non greedy regex matching in Sed有點類似的問題,但我不相信這個問題是怎麼回事,我還想知道是否有Sed解決方案。另外,我敢肯定,這肯定是我在這裏找不到的其他問題的重複。因此,如果有人能指出我認爲很好的正確問題,或者提供一個很好的答案。謝謝。
在這裏你不需要'grep',你的'sed'只會修改已經匹配的行。 (如果你確實需要過濾,你可以直接在'sed'中完成。'sed -E'/ priceRuleDesc/s /..../.../ –
正確,但我需要grep來過濾掉行沒有priceRuleDesc對象,我忽略了將它添加到示例文件中。 – entpnerd
沒有。只需使用'sed -nE'/ priceRuleDesc =/{s /..../..../; p}' '格式化,但是你的'sed'需要支撐塊。 –