awk迴圈讀取檔案內容,並把欄位賦給相應的變數

期待一片自己的藍天發表於2014-12-16

1.awk功能和實用形式

awk指定讀取檔案中的某一行的某個欄位

awk      可以設定條件來輸出檔案中m行到n行中每行的指定的k欄位,使用格式如下

awk    ‘NR==m,NR==n {print $k}’  path/filename

m,n,k表示實在的數值。如果要用變數來表示m,n的值,則變數需要用單引號將其引起來。

NR,{print }是awk命令在此用法下的規定欄位;path/filename表示讀取檔案的路徑及檔名。

 

當要讀取某一行的內容的k欄位時,使用格式如下

awk    ‘NR==m {print $k}’  path/filename

m,k與以上的含義一致,分別表示要讀取的行數和當前行的第k欄位。

 

2. 指令碼使用awk命令舉例

2.1 指令碼程式碼

例:awk_each_line.sh

圖1.awk_each_line.sh

【7-8】兩行表示讀取當前行($NUM)的第一、第二個欄位內容賦值給變數S_TD,T_NUM。注意:引用行變數($NUM)時需要用單引號(‘’)引起引用變數,只有這樣bash才能識別。

 

2.2 檔案內容和指令碼執行結果

id_num.txt檔案中的內容如下,與以上指令碼在同一個目錄之下:

圖2.id_num.txt檔案內容

 

指令碼執行結果為:

圖3.awk_each_line.sh執行結果

其中0001-0004表示每行內容中的第一個欄位,1-4表示每行內容的第二個欄位。

這就表示成功讀取了檔案中的每一行內容的不同欄位且將其賦給變數,而不是對檔案中所有內容進行列表。

 

Note Over。

相關文章