使用 g 命令 sed

问题描述 投票:0回答:2

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

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

有人能解释一下这里的

g
代表什么吗? 我知道连字符正在被逗号替换。

linux shell sed scripting
2个回答
7
投票

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

使用 Bash 更好的方法是

PROGRAM_ID=${PROGRAM_ID//-/,}

但是如果您必须移植到一般的 Bourne shell,则此替代设施不可用。

(在这种情况下,您应该注意将

"$PROGRAM_ID"
放在
echo
中的双引号中。)


3
投票

通过这两个示例很容易看出

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
,则仅替换第一个连字符。

© www.soinside.com 2019 - 2024. All rights reserved.