Bash:删除stdin的第一行

时间:2011-12-03 06:07:08

标签: bash account creation

我已经创建了一个用于创建帐户的脚本,该脚本从csv文件读取,我不需要csv中的第一行,因为它具有colums的标题,即时尝试使用sed 1d删除第一行$ file,但它似乎没有用。

#!/bin/bash

FILE="applicants.csv"

sed 1d $FILE |while IFS=: read USERNAME PASSWORD SCHOOL PROGRAM STATUS; do

#------------------------------------------
groupadd -f $SCHOOL
useradd $USERNAME -p $PASSWORD -g $SCHOOL
if [ $? == 0 ]; then 
echo
echo "Success! $USERNAME created"
grep $USERNAME /etc/passwd
echo
#------------------------------------------

else
echo "Failed to create account for $USERNAME"
fi

done < $FILE

这是csv文件

Full Name:DOB:School:Program:Status
JoseDavid:22-08-86:ACE:Bsc Computing:Unfinished
YasinAhmed:22-07-85:ACE:Bsc Networking:Complete
MohammedAli:21-04-84:ACE:Bsc Forensics:Complete
UtahKing:22-09-84:ACE:BSC IT:Unfinished
UsmanNaeem:21-09-75:ACE:BSC Computing:Complete

以下是输出的屏幕截图 http://i.stack.imgur.com/R5zPN.jpg

无论如何都要跳过第一行?

1 个答案:

答案 0 :(得分:3)

尝试使用tail -n +2 $FILE代替sed。

您正在使用末尾的重定向从未经编辑的文件中读取:done < $FILE。尝试将该行更改为done