Split string into array and print each element on a new line with commandline
12,159
Sticking with your awk ... just make sure you understand the difference between a field and a record separator :}
echo "a,b,c,d,e,f" | awk 'BEGIN{RS=","}{$1=$1}1'
But the tr solution in the comments is preferable.
Related videos on Youtube
Author by
danielr1996
Updated on September 18, 2022Comments
-
danielr1996 over 1 year
I'm having a String which is seperated by commas like
a,b,c,d,e,f
that I want to split into an array with the comma as seperator. Then I want to print each element on a new line. The problem I'm having is that all cli tools I know so far(sed, awk, grep) only work on lines, but how do I get a string into a format that can be used by these tools. What i'v tried so far isecho "a,b,c,d,e,f" | awk -F', ' '{print $i"\n"}'
How can I get this output
a b c d e f
from this input
a,b,c,d,e,f
?
-
Angel Todorov over 8 yearsI'm not clear what you're really asking. You can translate commas to newlines with "tr":
echo a, b, c, d | tr , '\n'
-- that leaves spaces at the start of the b/c/d lines. -
Costas over 8 years
IFS=',' read -a array <<<"a,b,c,d,e,f" ; printf '%s\n' "${array[@]}
-
Costas over 8 years@glennjackman
tr -s ', ' '\n'
-
Costas over 8 years
line="a,b,c,d,e,f" ; echo -e ${line//,/\\n}
-
Costas over 8 years@glennjackman Yes, you are right.
-
-
Mathias Begert over 8 yearsWhat's with the
$i
? -
tink over 8 yearsgood question; purious (from OPs incantation). will delete :)