2012-04-02 20 views

答えて

15

echo ${STR1// /,} 

デモ:

$ STR1="This is a string" 
$ echo ${STR1// /,} 
This,is,a,string 

bash: Manipulating stringsを参照してください。

+0

複数のスペースを(awkのようなツールを使わずに)1つのカンマに変換する方法はありますか? –

+1

@Kyle: 'extglob'がオンの場合、' $ {STR1 // +()/、} 'のようなことができます。 – Mat

10

STR1=This is a string 

ただ、sedを使用します。

echo $STR1 | sed 's/ /,/g' 

または純粋BASH道::

echo ${STR1// /,} 
0
STR1=`echo $STR1 | sed 's/ /,/g'` 
2

方法について

STR1="This is a string" 
StrFix="$(echo "$STR1" | sed 's/[[:space:]]/,/g')" 

echo "$StrFix" 

**output** 
This,is,a,string 

あなたは、文字列内の複数の隣接したスペースがあり、どのようなちょうど1つのコンマにそれらを減らすために、その後、

STR1="This is a string" 
StrFix="$(echo "$STR1" | sed 's/[[:space:]][[:space:]]*/,/g')" 

echo "$StrFix" 

**output** 
This,is,a,string 

sedを変更した場合、私はsedの非標準を使用して、そしてそうですは、[[:space:]] [[:space:]] * to indicate one or more "white-space" characters (including tabs, VT, maybe a few others). In a modern sed, I would expect [[:space:]] + `も使用しています。外部ツールを使用せずに

5
kent$ echo "STR1=This is a   string"|awk -v OFS="," '$1=$1' 
STR1=This,is,a,string 

注:

続けブランクがある場合は、それらを単一のコンマに置き換えられます。上記の例のように。

1

これはあなたのために働くかもしれない:

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 
関連する問題