首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Shell中使用sed替换字符串模式

问在Shell中使用sed替换字符串模式
EN

Stack Overflow用户
提问于 2016-09-20 19:09:19
回答 2查看 36关注 0票数 0

我想删除下面字符串中的"AS“部分,

代码语言:javascript
复制
CONV.BUY AS BUY, CONV.CUSTOM1 AS CUSTOM1 , TP.BUY AS BUY, TP.CUSTOM1 AS CUSTOM1  

应改为

代码语言:javascript
复制
CONV.BUY, CONV.CUSTOM1, TP.BUY, TP.CUSTOM1

我所做的是

代码语言:javascript
复制
echo $string |  sed -e 's/ AS.*\,/\,/g'

这给

代码语言:javascript
复制
CONV.BUY, TP.CUSTOM1 AS CUSTOM1

两个字段在sed中被过滤掉。有没有更好的解决方案来实现我的目标而不使用循环?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-20 19:13:07

用sed

代码语言:javascript
复制
sed 's/[[:blank:]]AS[^,]*//g'
  • [[:blank:]]AS匹配一个空格之前的AS,然后[^,]*匹配到下一个,。所有这些匹配的部分都通过用null替换来删除。

示例:

代码语言:javascript
复制
% sed 's/[[:blank:]]AS[^,]*//g' <<<'CONV.BUY AS BUY, CONV.CUSTOM1 AS CUSTOM1 , TP.BUY AS BUY, TP.CUSTOM1 AS CUSTOM1'
CONV.BUY, CONV.CUSTOM1, TP.BUY, TP.CUSTOM1
票数 1
EN

Stack Overflow用户

发布于 2016-09-20 19:13:52

可以将否定式字符类用作

代码语言:javascript
复制
sed 's/AS[^,]*//g'
  • [^,]*匹配零或多个非,字符。这意味着它与直接的,匹配,并将其替换为null。

示例

代码语言:javascript
复制
>>> echo "EONV.BUY AS BUY, CONV.CUSTOM1 AS CUSTOM1 , TP.BUY AS BUY, TP.CUSTOM1 AS CUSTOM1" | gsed 's/AS[^,]*//g'
EONV.BUY , CONV.CUSTOM1 , TP.BUY , TP.CUSTOM1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39602032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档