使用 g 的命令 sed



我是Linux的新手。我正在调试一些代码。 我遇到了以下命令:

PROGRAM_ID=$(echo $PROGRAM_ID|sed 's/-/,/g')

谁能解释一下g在这里代表什么?我知道连字符正在被逗号取代。

/g标志表示,在一行上全局执行替换。 如果没有该标志,则只会替换每行上的第一个连字符。

Bash的更好方法是

PROGRAM_ID=${PROGRAM_ID//-/,}

但是,如果您必须携带到Bourne Shell,则此替换设施不可用。

(在这种情况下,您应该注意在echo中将"$PROGRAM_ID"放在双引号中。

很容易看出g(全局)如何处理这两个示例:

echo "test-one-two-three" | sed 's/-/,/g'
test,one,two,three

echo "test-one-two-three" | sed 's/-/,/'
test,one-two-three

没有g它只会取代第一次命中。

最新更新