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.

Share:
12,159

Related videos on Youtube

danielr1996
Author by

danielr1996

Updated on September 18, 2022

Comments

  • danielr1996
    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 is

    echo "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
      Angel Todorov over 8 years
      I'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
      Costas over 8 years
      IFS=',' read -a array <<<"a,b,c,d,e,f" ; printf '%s\n' "${array[@]}
    • Costas
      Costas over 8 years
      @glennjackman tr -s ', ' '\n'
    • Costas
      Costas over 8 years
      line="a,b,c,d,e,f" ; echo -e ${line//,/\\n}
    • Costas
      Costas over 8 years
      @glennjackman Yes, you are right.
  • Mathias Begert
    Mathias Begert over 8 years
    What's with the $i?
  • tink
    tink over 8 years
    good question; purious (from OPs incantation). will delete :)