命令sed使用g

时间:2015-01-30 07:41:28

标签: linux shell sed scripting

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

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

有人可以解释一下g代表的内容吗? 我知道连字符正在被逗号替换。

2 个答案:

答案 0 :(得分:2)

/g标志表示在一行上全局执行替换。没有那个标志,只有每一行上的第一个连字符将被替换。

使用Bash的更好方法是

PROGRAM_ID=${PROGRAM_ID//-/,}

但是如果您必须可以移植到Bourne shell,则无法使用此替换工具。

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

答案 1 :(得分:0)

很容易看出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,它只会替换第一个匹配。