从文本文件中提取信息并在 unix 中的命令中使用它

Extract info from a text file and use it in a command in unix

我正在尝试从名为 'accounts.list' 的 .list 文件中提取信息 并在 CentOS 7 的命令行操作中使用提取的信息。我知道有一个简单的解决方案,但我一辈子都找不到它。

所以文件中的每一行都按以下格式列出:

John Smith | jsmith
Jane Doe | jdoe

我需要做的是用每一行的信息添加用户。因此,例如我想将每个部分添加到一个变量中,然后在 adduser 命令中使用该变量:

fn=John
ln=Smith
un=jsmith

useradd -c "$fn $ln" $un

所以我需要遍历每一行并提取该信息,添加用户,然后继续下一行。我想以最简单的方式做到这一点,但我尝试过的任何方法都没有奏效,我们将不胜感激。

while read -r fn ln ignore un; do useradd -c "$fn $ln" "$un"; done <accounts.list

或者,如果您更喜欢将命令分布在多行中:

while read -r fn ln ignore un
do
    useradd -c "$fn $ln" "$un"
done <accounts.list

工作原理

文件的每一行都有四个字段:名字 (fn)、姓氏 (ln)、竖线、用户名 (un)。命令 read 从输入文件中逐行读取并将这四个字段分配给变量 fnlnignoreun