Jump to content

reading a text file, line by line with bash


Recommended Posts

Bash is awesome, the only problem I have is that I have yet to find a simple way to read a basic text file from within a bash script one line at a time. For example, say my text file contains:

 

'Christmas Eve'

'Christmas Morning'

'New Years Eve'

 

So from my bash script I would like to be able to read each entire line, one at a time and save it to a variable within the script. I have googled and still can't find the answers. Please help! :D

Link to comment
Share on other sites

At first thought I can type two ways, I prefer the former because it doesn't use external commands:

while read line; do 
   echo $line # or whaterver you want to do with the $line variable
done < FILE

 

or

 

cat FILE | while read line; do 
   echo $line # or whaterver you want to do with the $line variable
done

 

hth

Link to comment
Share on other sites

Here is another example that has come up to my mind, this time I'm using the Field separator variable (IFS) set to "new line", and an array to store each line of the file into a field of an array named "lines":

old_IFS=$IFS
IFS=$'\n'
lines=($(cat FILE)) # array
IFS=$old_IFS

 

hence you can call each line by asking for its relative number:

echo ${line[4]} # will echo line number 4 (line numbering start with 0)

echo ${line[@]} # will print all the lines.

echo ${line[#]} # will print the size of the array (the total line numbering)

 

there are many other ways, just use the one that better fits your needs

 

 

hth

Edited by aru
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...