Bash: Read File Line By Line – While Read Line Loop
The while loop is the best way to read a file line by line in Linux.
If you need to read a file line by line and perform some action with each line – then you should use a while read line construction in Bash, as this is the most proper way to do the necessary.
In this article i will show the general syntax of the while read line construction in Bash and an example of how to read a file line by line from the Linux command line.
I will also show an example of the Bash script that reads an input file line by line and prints each line with some appended text.
Cool Tip: Make your Bash script interactive! Teach it to prompt for “Yes/No” confirmation. Read more →
While Read Line Loop in Bash
The general while read line construction that can be used in Bash scripts:
while read LINE
do COMMAND
done < FILE
The same construction in one line (easy to use on the Linux command line):
while read LINE; do COMMAND; done < FILE
As example lets print all users from the /etc/passwd file:
$ while read LINE; do echo "$LINE" | cut -f1 -d":"; done < /etc/passwd root daemon bin [...]

The LINE in this construction – is the name of a variable that stores the line during each loop iteration.
You can change it to the more appropriate name, depending on the contents of a FILE.
For example, if you store a list of users in a FILE – it would be better to name this variable not the LINE but the USER, as follows:
$ cat users.txt Eric Kyle Stan Kenny
$ while read USER; do echo "Hello $USER!"; done < users.txt Hello Eric! Hello Kyle! Hello Stan! Hello Kenny!
Cool Tip: Write a command once and have it executed N times using Bash FOR loop! Read more →
Bash Script: Read File Line By Line

Lets create a Bash script, that takes a path to a file as an argument and prints "This is a line:" before the each line of this file.
Create an empty readfile.sh file with the touch readfile.sh command.
Make it executable with chmod +x readfile.sh.
Open the readfile.sh with a text editor and put the following code:
#!/bin/bash
FILE=$1
while read LINE; do
echo "This is a line: $LINE"
done < $FILE
Cool Tip: Do not be a bore! Add COLORS to your Bash script! Make it look AWESOME! Read more →
Save and execute the script:
$ ./script.sh /etc/passwd This is a line: root:x:0:0:root:/root:/bin/bash This is a line: bin:x:1:1:bin:/bin:/sbin/nologin This is a line: daemon:x:2:2:daemon:/sbin:/sbin/nologin [...]

