要素にスペースを含めることができる配列があります。
set ASD "a" "b c" "d"
この配列をコンマ区切り値の単一の文字列に変換するにはどうすればよいですか?
# what I want:
"a,b c,d"
これまでに入手できる最も近い方法は、配列を文字列に変換してからすべてのスペースを置き換えることです。問題は、配列要素自体にスペースが含まれていない場合にのみ機能することです。
(echo $ARR | tr ' ' ',')
答え1
Fish 2.3.0以降、string
組み込み機能を使用できます。
string join ',' $ASD
この回答の残りの部分は、以前のバージョンの魚に適用されます。
1つのオプションは、変数接続を使用することです。
echo -s ,$ASD
これにより、先頭に追加のコンマが追加されます。削除するには、次のものを使用できますcut
。
echo -s ,$ASD | cut -b 2-
完全性のために、次のように入力して使用することもできますsed
。
echo -s $ASD, | sed 's/,$//'
答え2
printf
andのpaste
代わりにecho
andを使用できますtr
。
printf '%s\n' $ASD | paste -sd,
AFAIKには、fish
配列要素を連結する組み込みの方法はありません。