读取文件的几种方式
读取文件有如下几种常见的方式:按字符数量读取:每次可读取一个字符,或者多个字符,直到把整个文件读完
按照分隔符进行读取:一直读取直到遇到分隔符停止,下次继续从分隔符位置向后读取,直到读取整个文件
按行读取:每次读取一行,直到把整个文件读完。
它是按照分隔符读取的一种特殊情况,将分隔符指定为换行符\n
一次性读取整个文件
是按字符数量读取的特殊情况
也是按分隔符读取的特殊情况
按字节数量读取:一次读取指定数量的字节数据,直到把文件读完
下面使用Shell的read命令来演示前4种读取文件的方式(第五种按字节数读取的方式read不支持)。
按字符数量读取
read的-n选项和-N选项可以指定一次性读取多少个字符。# 只读一个字符
read -n 1 data
# 读100个字符,但如果不足100字符时遇到换行符则停止读取
read -n 100 data
# 强制读取100字符,遇到换行符也不停止
read -N 100 data
如果按照字符数量读取,直到把文件读完,则使用while循环,且将文件放在while结构的后面,而不能放在while循环的条件位置:# 正确
while read -N 3 data;do
echo "$data"
done
# 错误
while read -N 3 data
echo "$data"
done
按分隔符读取
read命令的-d选项可以指定读取文件时的分隔符。# 一直读取,直到遇到字符m才停止,并将读取的数据保存到data变量中
read -d "m" data
如果要按分隔符读取并读完整个文件,则使用while循环:while read -d "m" data ;do
echo "$data"
done
按行读取
read默认情况下就是按行读取的,一次读取一行。# 从a.txt中读取第一行保存到变量data中
read line
如果要求按行读取完整个文件,则使用while循环:while read line;do
echo "$line"
done
一次性读整个文件
要一次性读取完整个文件,有两种方式:按照字符数量读取,且指定的字符数要大于文件的总大小
按分隔符读取,且指定的分隔符是文件中不存在的字符,这样的话会一直读取,因为找不到分隔符而读完整个文件# 指定超出文件大小的字符数量
read -N 1000000 data
echo "$data"
# 指定文件中不存在的字符作为分隔符
read -d "_" data
echo "$data"
本文来自投稿,不代表访得立场,如若转载,请注明出处:http://www.found5.com//view/1393.html