0
使用的sed我想删除“AS”在下面的字符串的一部分,字符串模式替换掉壳牌
CONV.BUY AS BUY, CONV.CUSTOM1 AS CUSTOM1 , TP.BUY AS BUY, TP.CUSTOM1 AS CUSTOM1
应改为
CONV.BUY, CONV.CUSTOM1, TP.BUY, TP.CUSTOM1
我所做的是
echo $string | sed -e 's/ AS.*\,/\,/g'
哪给出
CONV.BUY, TP.CUSTOM1 AS CUSTOM1
在该sed中过滤掉了两个字段。有没有更好的解决方案来实现我的目标,而不使用循环?
完美..如果你不介意,可以请你解释'AS [^,] +'部分在sed?以及它如何替换没有逗号的实例 –
@OptimusPrime当然。请注意,这里'AS [^,] *'可以,不需要'+'(这是一个Exteneded正则表达式模式,匹配前面的一个或多个令牌)。因此,在AS [^,] *'中,'AS'字面上与'AS'匹配,'[^,]'匹配除','以外的任何字符,下面的*匹配零个或多个这样的字符,匹配一切,直到下一个','。 – heemayl
使感觉!还有一个问题,我们可以在该sed中进行调整以使'AS'不区分大小写吗?即如果它是'AS'或'as'则匹配? –