In Shell scripting, there are several common methods to read lines from a file. Below, I will introduce several commonly used methods along with examples:
Method 1: Using while Loop with read Command
This is one of the most commonly used methods, which reads each line of the file through a loop. Here is an example:
bashwhile IFS= read -r line do echo "Read line: $line" done < "file.txt"
In this script, IFS= (Internal Field Separator) ensures proper handling of spaces within lines, read -r prevents backslash characters from being misinterpreted, and < "file.txt" redirects the contents of the file file.txt into the while loop.
Method 2: Using cat with Pipes
Another approach involves combining the cat command with pipes to read file lines:
bashcat file.txt | while IFS= read -r line do echo "Read line: $line" done
This method functions similarly to the first one but may be slightly slower in certain scenarios, such as when dealing with very large input files.
Method 3: Using awk
awk is a powerful text processing utility that can also be used to read file lines:
bashawk '{print "Read line: " $0}' file.txt
Here, $0 represents the current line's content, and awk processes the file line by line by default.
Method 4: Using sed
Although sed is primarily designed for text replacement, it can also be used to read and print each line of a file:
bashsed -n 'p' file.txt
The -n option instructs sed not to automatically print each line, while the 'p' command directs sed to print the current line.
Each method has its own strengths and limitations, and the choice depends on the specific use case and personal preference. In practical work, we typically select the appropriate method based on file size, processing complexity, and performance requirements.