Shell指令碼如何逐行處理文字檔案

2022-09-26 11:33:11 字數 1228 閱讀 7463

read 命令從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給 shell 變數,用 ifs(內部字段分隔符)變數中的字元作為分隔符。variablename (變數名)引數指定給每乙個欄位的值,由 variablename (變數名)引數指定的以此類推,直到最後乙個字段。

read命令接收標準輸入,或其他檔案描述符的輸入,得到輸入後,read命令將資料放入乙個標準變數中.

利用read讀取檔案時,每次呼叫read命令都會讀取檔案中的"一行"文字.

當檔案沒有可讀的行時,read命令將以非零狀態退出.

cat data.dat | while read line

do echo "file:$"

done

while read line

do echo "file:$"

done < data.dat程式設計客棧

awk是一種優良的文字處理工具,提供了極其強大的功能.

語法格式:awk [選項]  '指令'  操作檔案

常用選項:-f  指定分隔符,分隔符用""引起來

-v:var=value在awk程式開始之前指定乙個值valu給變數var,這些變數值用於awk程式的begin快

-f:後面跟乙個儲存了awk程式的檔案,代替在命令列指定awk程式

利用awk讀取檔案中的每行資料,並且可以對每行資料做一些處理,還可以單獨處理每行資料裡的每列資料.

cat data.dat | awk ''

cat data.dat | awk 'for(i=2;i

第1行**輸出data.dat裡的每行資料,第2**輸出每行中從第2列之後的資料.

如果是單純的資料或文字檔案的按行讀取和顯示的話,使用awk命令比較方便.

for var in file 表示變數var在file中迴圈取值.程式設計客棧取值的分隔符由$ifs確定.

for line in $(cat data.dat)

do echo "file:$"

done

for line in `cat data.dat`

do echo "file:$"

done

如果輸入文字每行中沒有空格,則line在輸入文字中按換行符分隔符迴圈取值.

如果輸入文字中包括空格或製表符,則不是換行讀取,line在輸入文字中按空格分隔符或製表符或換行符特環取值.

可以通過把ifs設定為換行符來達到逐行讀取的功能.

ifs的預設值為:空白(包括:空格,製表符,換行符).

shell指令碼 逐行處理文字檔案

1.通過read命令完成 read命令接收標準輸入,或其他檔案描述符的輸入,得到輸入後,read命令將資料放入乙個標準變數中 利用read讀取檔案時,每次呼叫read命令都會讀取檔案中的 一行 文字 當檔案沒有可讀的行時,read命令將以非零狀態退出 cat data.dat while read ...

shell指令碼逐行處理文字,含空格,中文問題

示例 文字中含空格及中文。需求為逐行處理資料,插入sql中 cat newdata.txt 18632206773 bqex quanyuwei001 王安琪 18660210976 bqex sunchenhao001 趙越 18618570937 bqex zhangping017 張萍 186...

Shell指令碼for迴圈實現逐行處理檔案

主要內容 shell指令碼中的for迴圈實現逐行處理檔案 說到通過shell實現逐行處理檔案,學過shell指令碼的人會告訴你使用while迴圈更適合逐行處理檔案 一般來說,以逐行處理檔案為例,確認while迴圈確認把你for迴圈更加優秀 但是while迴圈中存在乙個弊端 如果指令碼執行機器到目標機...