回到:linux
读取文件有以下几种常见的方式:shell
下面使用Shell的read命令来演示前4种读取文件的方式(第五种按字节数读取的方式read不支持)。3d
read的-n选项和-N选项能够指定一次性读取多少个字符。code
# 只读一个字符 read -n 1 data <a.txt # 读100个字符,但若是不足100字符时遇到换行符则中止读取 read -n 100 data < a.txt # 强制读取100字符,遇到换行符也不中止 read -N 100 data < a.txt
若是按照字符数量读取,直到把文件读完,则使用while循环,且将文件放在while结构的后面,而不能放在while循环的条件位置:blog
# 正确 while read -N 3 data;do echo "$data" done <a.txt # 错误 while read -N 3 data < a.txt;do echo "$data" done
read命令的-d选项能够指定读取文件时的分隔符。get
# 一直读取,直到遇到字符m才中止,并将读取的数据保存到data变量中 read -d "m" data <a.txt
若是要按分隔符读取并读完整个文件,则使用while循环:awk
while read -d "m" data ;do echo "$data" done <a.txt
read默认状况下就是按行读取的,一次读取一行。变量
# 从a.txt中读取第一行保存到变量data中 read line <a.txt
若是要求按行读取完整个文件,则使用while循环:循环
while read line;do echo "$line" done <a.txt
要一次性读取完整个文件,有两种方式:im
# 指定超出文件大小的字符数量 read -N 1000000 data <a.txt echo "$data" # 指定文件中不存在的字符做为分隔符 read -d "_" data <a.txt echo "$data"