- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認(rèn)證網(wǎng)站身份V標(biāo)記
- 域名注冊服務(wù)機(jī)構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機(jī)構(gòu):新網(wǎng)數(shù)碼
Linux讀取文件的幾種方式
歡迎來到藍(lán)隊(duì)云技術(shù)小課堂,每天分享一個技術(shù)小知識。
讀取文件有如下幾種常見的方式:
按字符數(shù)量讀?。好恳淮巫x取一個字符,或者多個字符,直到把整個文件讀取完
# 范例:read命令的-n選項(xiàng)和-N選項(xiàng)可以指定一次性讀取多少個字符
# 只讀一個字符
read -n 1 data <a.txt
echo $data
# 讀一百個字符,如果不足100字符時遇到換行符則停止讀取
read -n 100 data < a.txt
echo $data
# 讀一百個字符,遇到換行符也不停止讀取
read -N 100 data < a.txt
echo $data
如果按照字符數(shù)量讀取,直到把文件讀完,則使用while循環(huán),且將文件放在while結(jié)構(gòu)的后面,而不能放在while循環(huán)的條件位置:
# 正確
while read -N 3 data;do
echo "$data"
done <a.txt
# 錯誤
while read -N 3 data < a.txt;do
echo "$data"
done
按照分隔符進(jìn)行讀?。?一直讀取值到遇到了指定的分隔符停止,下次繼續(xù)從分隔的位置處向后讀取,直到讀完整個文件
read命令的-d選項(xiàng)可以指定讀取文件時的分隔符。
# 一直讀取,直到遇到字符m才停止,并將讀取的數(shù)據(jù)保存到data變量中
read -d "m" data <a.txt
如果要按分隔符讀取并讀完整個文件,則使用while循環(huán):
while read -d "m" data ;do
echo "$data"
done <a.txt
按行讀?。好看巫x取一行,直到把整個文件讀完(他是按照分隔符讀取的一種特殊情況:將分隔符指定為\\\\n)
read默認(rèn)情況下就是按行讀取的,一次讀取一行。
# 從a.txt中讀取第一行保存到變量data中
read line <a.txt
如果要求按行讀取完整個文件,則使用while循環(huán):
while read line;do
echo "$line"
done <a.txt
一次性讀取整個文件
要一次性讀取完整個文件,有兩種方式:
# 指定超出文件大小的字符數(shù)量
read -N 1000000 data <a.txt
echo "$data"
# 指定文件中不存在的字符作為分隔符
read -d "_" data <a.txt
echo "$data"
按照字符數(shù)量讀取,且指定的字符數(shù)要大于文件的總大小
按分隔符讀取,且指定的分隔符是文件中不存在的字符,這樣的話會一直讀取,因?yàn)檎也坏椒指舴x完整個文件
按字節(jié)數(shù)量讀?。阂淮巫x取執(zhí)行數(shù)量的字節(jié)數(shù)據(jù),直到把文件讀完
藍(lán)隊(duì)云官網(wǎng)上擁有完善的技術(shù)支持庫可供參考,大家可自行查閱,更多技術(shù)問題,可以直接咨詢。同時,藍(lán)隊(duì)云整理了運(yùn)維必備的工具包免費(fèi)分享給大家使用,需要的朋友可以直接咨詢。
更多技術(shù)知識,藍(lán)隊(duì)云期待與你一起探索。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP