欲しい
$ echo a{b,c,d}
カンマ区切りのリストを出力します。
ab,ac,ad
一般的な出力の代わりに
ab ac ad
コマンドラインでこれを行う最も簡単な方法は何ですか?
答え1
仮説要素スペースがない場合は、スペースをコンマに変換できます。
echo a{b,c,d} | tr ' ' ,
次を生成します。
ab,ac,ad
文字とともに範囲を使用することもできます。
echo a{b..d} | tr ' ' ,
これは、より広い範囲が必要な場合に特に便利です。
答え2
bashは、生成された単語を連結するために$ IFSを使用しないようです。もう1つの手法は、生成された単語を配列に保存してから$ IFSすることです。〜する遊び:
このシェルのIFSを変更しないようにサブシェルを使用します。次のいずれかを選択します。
( words=( a{b,c,d} ); IFS=,; echo "${words[*]}" )
( set -- a{b,c,d}; IFS=,; echo "$*" )
カンマ区切り文字列を標準出力に送信します。キャプチャしたい場合:
joined=$( set -- a{b,c,d}; IFS=,; echo "$*" )
答え3
私はこれを達成する方法がたくさんあると確信しています。 1つの方法は次のとおりです。
echo a{b,c,d} | sed 's/ /,/g'
答え4
示されているように要素を展開し、繰り返して、最初の繰り返しを除くすべての要素にコンマを追加します。
for i in a{b,c,d}; do
u="${u:+$u, }$i"
done
echo "$u"
結果:
ab, ac, ad
バラよりbash パラメータの置換。