Shell指令碼從檔案中逐行讀取內容的幾種方法例項

2022-10-06 07:21:14 字數 1602 閱讀 6841

從檔案逐行讀取資料的方法有兩種,一種是在while迴圈或until迴圈中使用read命令,通過檔案描述符一行一行的讀取檔案內容;另一種是在for迴圈中使用cat 來讀取檔案的內容。

1.使用for迴圈從檔案中逐行讀取內pplzjtmh容:在預設情況現下此方法是逐個單詞的讀取檔案內容,因為使用這種方法讀取檔案時,他使用環境變數ifs的值作為分隔符,由於ifs的預設值是「

示例1:

#!/binpplzjtmh/bash

bak=$ifs pplzjtmh #定義乙個變數bak儲存ifs的值

if [ $# -ne 1 ];then #判斷位置引數是否為1

echo "usage $0 filename"

exit

fiif [ ! -f $1 ];then #判斷位置引數是否為檔案

echo "the $1 is not a file"

exit

fi ifs=$'\n' #將環境變數ifs的值修改為換行符

for i in `cat $1` #逐行讀取檔案內容並列印到螢幕

do echo $i

difs=$bak #將環境變數ifs的值改回原值

示例2:如果不修改變數ifs的值,系統預設按照ifs的原值,按空格來讀取檔案

#!/bin/bash

if [ $# -ne 1 ];then

echo "usage $0 filename"

exit

fiif [ ! -f $1 ];then

echo "the $1 is not a file"

exit

fifor i in `cat $1`

do echo $i

done

2.在指令碼中定義**塊,使用重定向逐行讀取檔案內容:

示例:#!/bin/bash

if [ $# -ne 1 ];then #判斷指令碼引數是否為1

echo "usage:$0 filename"

exit 1

fifile=$1 #將指令碼引數引數賦值給變數file

中的**即為**塊

read line1

read line2

}3.使用while迴圈結合read命令逐行讀取檔案內容:

#!/bin/bash

if [ $# -ne 1 ];then

echo "usage:$0 filename"

exit 1

fifile=$1

程式設計客棧if [ ! -f $file ];then

echo "the $file is not a file"

exit 2

ficount=0

while read line #使用read命令迴圈讀取檔案內容,並將讀取的檔案內容賦值給變數line

do let count++

echo "$count $line"

done

總結

Shell指令碼逐行讀取檔案

方法1 while迴圈中執行效率最高,最常用的方法。while read line doecho line done filename 注釋 這種方式在結束的時候需要執行檔案,就好像是執行完的時候再把檔案讀進去一樣。方法2 管道法 cat filename while read line cat f...

如何用Shell逐行讀取檔案

在學習linux shell scripts時,乙個最常見的錯誤就是用for for line in cat file.txt do 迴圈逐行讀取檔案。下面的例子可以看出這樣做的結果。檔案file.txt內容 cat file.txt this is the row no 1 this is the...

shell 逐行讀取檔案的內容

說明 shell 逐行讀取文字檔案內容。示例 讀取 etc passwd 檔案內容。1 python view plain copy bin bash ifs n 0 forline in cat etc passwd do n expr n 1 echo e n t line done 2 pyt...