나는 원해요
$ 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 매개변수 대체.