国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

shell下同時讀取多個文件的方法

2020-06-13 12:22:58
字體:
來源:轉載
供稿:網(wǎng)友
在shell腳本下,可以多種方式實現(xiàn)按行讀取文件
 
 

 

 

1. 單個文件的讀取

在shell腳本下,可以多種方式實現(xiàn)按行讀取文件,如下:

for line in `cat ${input_filename}`do  echo $linedone
while read linedo  echo $linedone < ${input_filename}

其中第二種方式是將文件重定向到標準輸入中

2. 多個文件讀取方法

那如何實現(xiàn)同時多個文件的讀呢?
我們可以繼續(xù)利用bash中的文件重定向功能,將文件重定向到特定的文件描述符中,語法如下:

n<filen>filen>>filen<>file

這里的n代表打開文件file的文件描述符,類似其他編程語言中的fd,如果沒有指定n,則其默認行為如下:

<file   #same as 0<file>file  #same as 1>file<>file   #same as 0<>file

我們可以通過exec命令來打開所要重定向的文件:

exec 7<file1exec 8<file2

然后我們可以通過read命令來讀取對應文件的內容:

read data <&7 #使用符合是為了區(qū)分7是文件描述符,而不是文件名read data <&8
關閉文件
exec 7</dev/nullexec 8</dev/null

多文件讀取示例代碼如下:

readfiles() {	local FD1=7	local FD2=8	local file1=$1	local file2=$2	local count1=0	local count2=0	local eof1=0	local eof2=0	local data1	local data2 	# Open files.	exec 7<$file1	exec 8<$file2	while [[ $eof1 -eq 0  ||  $eof2 -eq 0 ]]	do		if read data1<&$FD1; then			let count1++			printf "%s, line %d: %s/n" $file1 $count1 "$data1"		else			eof1=1		fi		if read data2 <&$FD2; then			let count2++			printf "%s, line %d: %s/n" $file2 $count2 "$data2"		else			eof2=1		fi	done}#read file1 and file2readfiles file1 file2


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 桐乡市| 喀喇| 娄底市| 桦甸市| 剑川县| 阜新| 莱州市| 南陵县| 榆社县| 麻江县| 乌恰县| 彰化市| 台安县| 和龙市| 渝北区| 泸州市| 荆门市| 呼图壁县| 互助| 常山县| 商洛市| 石狮市| 洪洞县| 洱源县| 格尔木市| 新丰县| 磴口县| 马山县| 梁平县| 金阳县| 德昌县| 正蓝旗| 永靖县| 苗栗市| 商城县| 五大连池市| 邢台市| 舞阳县| 会宁县| 松江区| 冀州市|