How To

How To Read A File Line By Line In Bash

Introduction

Reading a file line by line is a common task in Bash scripting. Many Linux scripts need to process text files, configuration files, log files, wordlists, usernames, IP addresses, or command output one line at a time.

If you are learning Bash scripting, this is an important topic because file reading is used in automation, log analysis, cybersecurity tasks, system monitoring, and data processing. For example, you can read a list of IP addresses and ping each one, read usernames from a file, or scan log files for suspicious activity.

Create A Sample File

First, create a sample text file:

nano users.txt

Add the following lines:

adminkalirootguestdeveloper

Save the file and exit the editor.

Basic Method To Read A File Line By Line

The most common way to read a file line by line in Bash is by using a while read loop.

Create a script:

nano read-file.sh

Add the following code:

#!/bin/bashwhile read linedo    echo "User: $line"done < users.txt

Give execute permission and run it:

chmod +x read-file.sh./read-file.sh

Output:

User: adminUser: kaliUser: rootUser: guestUser: developer

In this script, Bash reads each line from users.txt and stores it in the variable line.

Better Method Using read -r

The recommended method is to use read -r. This prevents backslashes from being treated as escape characters.

#!/bin/bashwhile read -r linedo    echo "Line: $line"done < users.txt

For most scripts, read -r is safer and better.

Read A File And Skip Empty Lines

Sometimes files may contain blank lines. You can skip them using an if condition.

#!/bin/bashwhile read -r linedo    if [[ -z "$line" ]]; then        continue    fi    echo "Processing: $line"done < users.txt

The -z operator checks whether the line is empty.

Cybersecurity Example: Read IP Addresses From A File

Create an IP list:

nano ips.txt

Add:

192.168.1.1192.168.1.2192.168.1.3

Now create a script:

#!/bin/bashwhile read -r ipdo    echo "Pinging $ip"    ping -c 1 "$ip"done < ips.txt

This script reads each IP address and runs a ping command.

Conclusion

Reading a file line by line in Bash is a basic but powerful scripting skill. The best method is using a while read -r line loop with input redirection.

This technique is useful for processing logs, reading user lists, scanning IP addresses, handling configuration files, and building cybersecurity automation scripts. Once you understand this concept, you can create more practical and powerful Bash scripts in Linux.

Cyber Defence

Recent Posts

Install Mono on Ubuntu 18.04: C# Compiler and Runtime Guide

Running programs built for Microsoft's framework on a Linux system is easier than you think. Mono is…

10 hours ago

Install OpenCV on Ubuntu 18.04: Step-by-Step Setup Guide

Computer vision technology powers many modern applications, from image editors to facial scanners. OpenCV (Open Source Computer…

10 hours ago

Install VNC on Ubuntu 18.04: Step-by-Step TigerVNC Setup

A remote desktop interface makes it easy to manage a remote computer. VNC (Virtual Network Computing) is…

10 hours ago

Install Gitea on Ubuntu 18.04: Self-Hosted Git Service Guide

Hosting your own code repositories is a great way to keep your projects private. Gitea is a…

10 hours ago

Install Java on Ubuntu 18.04: OpenJDK 11 and OpenJDK 8

Many modern programs require Java to run. From development tools like Eclipse to search systems…

10 hours ago

Configure a Static IP Address on Ubuntu 18.04: Netplan Guide

Setting a static IP address on your server is a smart move. It ensures your…

1 day ago