replacement for cut --output-delimiter

Marcos picture Marcos · Nov 25, 2013 · Viewed 14.9k times · Source

I created a script that was using

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

to add a newline for each command separated value in RHEL 5, for e.g.

[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

But unfortunately when I run the same command in Solaris 10, it doesn't work at all :( !

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]

I checked the man page for 'cut' and alas there is no ' --output-delimiter ' in there !

So how do I achieve this in Solaris 10 (bash)? I guess awk would be a solution, but I'm unable to frame up the options properly.

Note: The comma separated variables might have " " space in them.

Answer

fedorqui 'SO stop harming' picture fedorqui 'SO stop harming' · Nov 25, 2013

What about using tr for this?

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

or

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

With :

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

Or with :

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