Welcome to my website. I am always posting links to photo albums, art, technology and other creations. Everything that you will see on my numerous personal sites is powered by the formVistaTM Website Management Engine.

icon.linkedin.jpgicon.twitter.jpg

  • Creating an Array in Bash from a File With Each Element on a Separate Line
    07/17/2014 8:38AM

    Let's say that you have a file and you would like to convert each line in the file to an element in an array.

    The key to this is knowing about and how to manipulate the IFS (Internal Field Separator).  The default IFS is whitespace (a space, tab, or newline) and if you create an array passing it a whitespace delimited list of strings, each token will be set to an element in the array.

    ARRAY=(a b d c)

    Will result in an array with a single letter in each element.

    To do the same thing with the contents of a file, whereby each element is on a separate line, the first thing to be done is to set the IFS that is just new-lines (carriage returns).  Then set, as the input for the array, the contents of the file.

    # Save our existing IFS
    OIFS="$IFS"

    # Set our IFS to a new-line/carriage return
    IFS=$'\r\n'

    # Create the array with the contents of a file
    TEST_ARRAY=($(cat some_file.txt))

    # Reset our IFS
    IFS="$OIFS"

    for i in "${TEST_ARRAY[@]}"
    do
       echo $i
    done


Advanced Search

Categories

Archives