我需要帮助编写一个从文件读取名称的脚本

我需要帮助编写一个从文件读取名称的脚本

我的文件有 100 行。我必须循环遍历所有行并获取运动员的全名。

每行格式看起来都像这样,但是运动员不同:

vada359,Valerie Adams,Women,Athletics,AT,new-Zealand

我很难想出一个脚本来读取该行并使用该useradd命令创建新用户 - 但我只应该获得全名。

您能帮我出出主意如何做到这一点吗?

答案1

由于这几乎是一道家庭作业题,我不会给出确切答案。不过,这里有一些想法可能会帮助你找到解决方案。

许多工具允许以特定字符将文本拆分为列或“字段”。 在您的例子中,您希望以逗号拆分文本,并提取字段 #2。 awk 等工具允许使用选项指定字段分隔符 -F,并将字段打印为 $1、$2、$3 等。cut正如 Elder Geek 提到的那样,这是另一种用于此类工作的工具,可以用作-d字段分隔符和-fx字段,其中 x 是整数。

提取这些字段后,您需要将每个字段传递给useradd或更好的adduser,这是一个专为轻松将用户添加到系统而设计的 Perl 脚本。如果您通过管道输出上一个命令中的每个名称adduser,则可能需要使用类似

command1 | xargs adduser

但是,有一个小问题 - 您将得到一个以空格分隔的字符串,其中名字和姓氏。典型的 Unix 用户名是单个字符串,因此我建议您通过tr -d ' '命令发送提取的名称,该命令会删除空格。这样,您将创建一个用户 ValerieAdams。根据您的要求,这可能是或可能不可接受的,因此请查看要求。

此外,正如 Kaz Wolfe 指出的那样,默认情况下 adduser 中不允许使用大写用户名,但是可以--force-badname按照以下方式使用标志:karthic87 的回答

相关内容