目前,我有格式的文件,如下所示:桑达正则表达式^ *(尖点星号)不匹配正确
####<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'需要支撑块。 –