【问题标题】:While loop, how to read from second line of text fileWhile循环,如何从文本文件的第二行读取
【发布时间】:2011-11-30 22:28:38
【问题描述】:

在过去的 2 个小时里,我已经尝试了所有方法来完成这项工作,但我在 shell 和编程方面的经验有限。

我有一个循环

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

statements here...

done < $file

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

useradd $var1 -p var2 -g var3

我想让脚本只从第二行开始阅读,我无法让它工作。类似于 while ifs=, read (from second line) var 1 var 2 var3 etc.

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

【问题讨论】:

    标签: bash


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      使用awk的解决方案:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-24
        • 2010-09-14
        • 2022-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多