用sed替换第一个匹配项

时间:2018-05-11 07:19:33

标签: regex sed

如下例所示,我想只保留第一个之前的字词 '约翰'

然而,我应用的模式似乎取代了John从头到尾。所以我需要两次调用sed。

我怎样才能找到正确的方法?

PATTERN="I am John, you are John also"
OUTPUT=$( echo "$PATTERN" | sed -r "s/(^.*)([ \t]*John[ ,\t]*)(.*$)/\1/" )
echo "$OUTPUT"
OUTPUT=$( echo "$OUTPUT" | sed -r "s/(^.*)([ \t]*John[ ,\t]*)(.*$)/\1/" )
echo "$OUTPUT"

我的期望是只召唤一次。因为" John"好几次都会出现问题。

通过上述步骤,它将生成输出:

首先匹配&在最后约翰之后修剪这个词;那么第一个约翰。

  

我是约翰,你是

     

我想执行一次并获得

  

0 个答案:

没有答案