从文本文件中提取信息并在 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
从输入文件中逐行读取并将这四个字段分配给变量 fn
、ln
、ignore
和 un
。
我正在尝试从名为 '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
从输入文件中逐行读取并将这四个字段分配给变量 fn
、ln
、ignore
和 un
。