在bashshell中删除字符串中带有逗号的空格
我想用逗号替换字符串中的空格/空格在bashshell中删除字符串中带有逗号的空格,bash,Bash,我想用逗号替换字符串中的空格/空格 STR1=This is a string 到 只需使用sed: echo $STR1 | sed 's/ /,/g' 或者纯粹的猛击方式:: echo ${STR1// /,} 怎么样 STR1="This is a string" StrFix="$( echo "$STR1" | sed 's/[[:space:]]/,/g')" echo "$StrFix" **output** This,is,a,string 如果字符串中有多个相邻空
STR1=This is a string
到
只需使用sed:
echo $STR1 | sed 's/ /,/g'
或者纯粹的猛击方式::
echo ${STR1// /,}
怎么样
STR1="This is a string"
StrFix="$( echo "$STR1" | sed 's/[[:space:]]/,/g')"
echo "$StrFix"
**output**
This,is,a,string
如果字符串中有多个相邻空格,并且要将它们减少为1个逗号,则将sed
更改为
STR1="This is a string"
StrFix="$( echo "$STR1" | sed 's/[[:space:]][[:space:]]*/,/g')"
echo "$StrFix"
**output**
This,is,a,string
我使用的是非标准的sed,因此我使用了“`[:space:][[:space:][]*
来表示一个或多个“空白”字符(包括制表符、VT,可能还有一些其他字符)。在现代sed中,我希望
[[:space:]+`也能正常工作。无需使用外部工具:
echo ${STR1// /,}
演示:
看
注意:
如果有连续的空格,它们将被替换为一个逗号。如上例所示。这可能适合您:
echo 'STR1=This is a string' | sed 'y/ /,/'
STR1=This,is,a,string
或:
是否应该用一个逗号替换两个连续的空格?是否有办法强制将多个空格转换为一个逗号(而不必使用
awk
)之类的工具?@Kyle:如果启用了extglob
,您可以执行类似${STR1/+()/,}
。这几乎肯定是大多数访问此问题的人都在寻找的答案,而不是将一系列空格替换为一系列逗号的变体。我认为这应该是最好的答案,因为如果有不好的空格,顶部的答案也会在末尾加逗号。
echo ${STR1// /,}
$ STR1="This is a string"
$ echo ${STR1// /,}
This,is,a,string
kent$ echo "STR1=This is a string"|awk -v OFS="," '$1=$1'
STR1=This,is,a,string
echo 'STR1=This is a string' | sed 'y/ /,/'
STR1=This,is,a,string
echo 'STR1=This is a string' | tr ' ' ','
STR1=This,is,a,string