Bash 중괄호 확장을 사용하여 쉼표로 구분된 문자열을 출력하는 방법

Bash 중괄호 확장을 사용하여 쉼표로 구분된 문자열을 출력하는 방법

나는 원해요

$ 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를 사용하지 않는 것 같습니다. 또 다른 기술은 생성된 단어를 배열에 저장한 다음 $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

나는 이것을 달성하는 방법이 많이 있다고 확신합니다. 한 가지 방법은 다음과 같습니다.

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 매개변수 대체.

관련 정보