2011-11-30 37 views
8

Tôi đã thử mọi thứ trong 2 giờ qua để làm việc này nhưng kinh nghiệm của tôi về trình bao và lập trình bị giới hạn.Trong khi vòng lặp, cách đọc từ dòng thứ hai của tệp văn bản

Tôi có một vòng lặp

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

statements here... 

done < $file 

Bây giờ các hoạt động bên trong tuyên bố là để đọc từ một tập tin văn bản có 5 lĩnh vực như bạn có thể nhìn thấy và sau đó sử dụng chúng để tạo ra các tài khoản trong Linux sử dụng bash

useradd $var1 -p var2 -g var3 và như vậy trên

Tôi muốn làm cho tập lệnh bắt đầu đọc từ dòng thứ hai, tôi không thể làm cho nó hoạt động. một cái gì đó giống như trong khi ifs =, đọc (từ dòng thứ hai) var 1 var 2 var3, v.v.

lý do cho tệp này là một cơ sở dữ liệu được xuất từ ​​excel sang csv để dòng đầu tiên chứa tiêu đề như tên đầu tiên học vv vv và là không cần thiết

sự giúp đỡ của bạn được đánh giá cao

Addition:

Trước khi người sử dụng đang được tạo ra, tôi đã thêm một câu lệnh if và nếu người dùng đáp ứng một điều kiện thì họ sẽ được tạo ra.

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

đầu ra của echo là một cái gì đó giống như

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

thậm chí nếu tôi thêm 1d sed | trong khi IFS = vv vv có vẻ như nó vẫn đang đọc dòng đầu tiên, đó là lý do tại sao im nhận đầu ra đầu tiên như "tên đầy đủ chưa được đăng ký đầy đủ"

Trả lời

12

Sử dụng sed để "xóa" dòng đầu tiên từ đầu vào được truyền đến khi vòng lặp

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

Một giải pháp sử dụng awk:

awk 'NR >= 2 { print }' < "$file" 
Các vấn đề liên quan