2013-11-25 2 views
5

I은 ​​예를 들면, RHEL 5에서 각 명령 분리 값 개행을 추가대체 --output 구분자

cut -d',' -f- --output-delimiter=$'\n' 

를 사용 하였다 스크립트를 작성 아니오가 아아

[root]# var="hi,hello how,are you,doing" 
[root]# echo $var 
hi,hello how,are you,doing 
[root]# echo $var|cut -d',' -f- --output-delimiter=$'\n' 
hi 
hello how 
are you 
doing 

하지만 솔라리스 10에서 같은 명령을 실행할 때 불행히도, 모든 :(에서 작동하지 않습니다!

bash-3.00# var="hi,hello how,are you,doing" 
bash-3.00# echo $var 
hi,hello how,are you,doing 
bash-3.00# echo $var|cut -d',' -f- --output-delimiter=$'\n' 
cut: illegal option -- output-delimiter= 

usage: cut -b list [-n] [filename ...] 
     cut -c list [filename ...] 
     cut -f list [-d delim] [-s] [filename] 

나는 '컷'에 대한 매뉴얼 페이지를 확인하지 않고 거기에 '--output-구분자'! 내가? 내가 AWK는 해결책이 될 것이라고 생각 솔라리스 10 (배쉬)이 달성하지만 제대로 옵션을 프레임 드릴 수 없습니다 어떻게 그래서

.

참고 : 쉼표 분리 된 변수는 그 안에 공간을 가질 수 있습니다.

+0

RHEL에서와 동일한 절단 명령을 사용하려면 [GNU coreutils] (https://www.gnu.org/software/coreutils/) 패키지를 설치하십시오. – alanc

답변

7

여기에 tr을 사용하면 어떨까요?

$ tr ',' '\n' <<< "$var" 
hi 
hello how 
are you 
doing 

또는

$ echo $var | tr ',' '\n' 
hi 
hello how 
are you 
doing 

:

$ awk '1' RS=, <<< "$var" 
hi 
hello how 
are you 
doing 
+0

어쨌든 나는 큰 덩어리 같은 느낌이야! 나는 'tr'또는 'sed'를 사용하는 것을 결코 생각하지 못했습니다 ... pfffttt ..... 답변을 많이 주셔서 감사합니다! – Marcos

+0

은 작동하지 않았다 '나오지도' 의 bash-3.00 # 에코 $ var에 | 나오지도 -e의 /,/\ n/g ' hinhello hownare youndoing 하지만'TR '했다! – Marcos

+0

나는 테스트 할 Solaris 서버가 없지만 어쩌면 http://stackoverflow.com/questions/8991275/escaping-newlines-in-sed-replacement-string에서 몇 가지 단서를 찾을 수 있습니다. 그리고'tr'을 읽는 것이 좋았다. :) – fedorqui

3

아마도 자체에서 수행

$ sed 's/,/\n/g' <<< "$var" 
hi 
hello how 
are you 
doing 

또는

?

var="hi,hello how,are you,doing" 
printf "$var" | (IFS=, read -r -a arr; printf "%s\n" "${arr[@]}") 
hi 
hello how 
are you 
doing 
+0

답장을 보내 주셔서 감사합니다. 그러나 나는 이것에 대한 배열을 사용하지 않으려 고합니다. – Marcos