while循环时,如何从第二行文本文件中读取

时间:2011-11-30 22:28:39

标签: bash

我已经尝试了过去2小时的所有工作,但我在shell和编程方面的经验有限。

我有一个循环

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

statements here...

done < $file

现在语句内部的操作是从一个包含5个字段的文本文件中读取,然后使用它们在Linux中使用bash创建帐户

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 =等等似乎它仍在阅读第一行,这就是为什么我得到第一个输出,如“全名未完全注册”

2 个答案:

答案 0 :(得分:12)

使用sed“删除”传递给while循环的输入的第一行

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

答案 1 :(得分:0)

使用awk的解决方案:

awk 'NR >= 2 { print }' < "$file"