2011-11-30 49 views
8

我已經嘗試了過去2個小時的一切來獲得這個工作,但我在shell和編程方面的經驗是有限的。雖然循環,如何從第二行文本文件中讀取

我有一個循環

while IFS="," read var1 var2 var3 var4 var5 ; do 

statements here... 

done < $file 

現在內聲明的動作情況,有5場的文本文件閱讀,你可以看到,然後用它們使用bash

在Linux中創建帳戶useradd $var1 -p var2 -g var3等等

我想讓腳本開始只從第二行讀取,我無法得到它的工作。類似於ifs =,讀取(從第二行)var 1 var 2 var3等

原因是該文件是從excel導出到csv的數據庫,因此第一行將包含標題,如名字dob就讀等等等等,而不是需要

您的幫助表示讚賞

增加:

正在創建的用戶之前,我加入了一個if語句,如果用戶符合條件,那麼他們將被創建。

if [ "$var5" == "fullyenrolled" ]; then 
continue with account creation... 
echo "$var1 successfuly created" 
else 
echo "Sorry user $var1 is not fully enrolled" 
fi 

回聲的輸出是一樣的東西

Full name is not fully enrolled 
user1 successfuly created 
user2 successfuly created 

即使我添加SED 1D |而IFS =等等,似乎它仍在讀第一行,這就是爲什麼即時通訊獲得第一個輸出,如「全名未完全註冊」

回答

12

使用sed從傳入的輸入中「刪除」第一行到while循環

sed 1d $file | while ... 
do 
     your statements here 
done 
0

的溶液使用awk

awk 'NR >= 2 { print }' < "$file" 
相關問題