【问题标题】:Extract info from a text file and use it in a command in unix从文本文件中提取信息并在 unix 的命令中使用它
【发布时间】:2015-12-11 05:06:48
【问题描述】:

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

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

John Smith | jsmith
Jane Doe | jdoe

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

fn=John
ln=Smith
un=jsmith

useradd -c "$fn $ln" $un

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

【问题讨论】:

  • 请注意,shell 分配通常不以$ 为前缀;你几乎肯定想要fn=John。如所写,如果fn=XYZ,则$fn=John$XYZ 设置为John
  • 谢谢乔纳森,是的,我写错了,我对 shell 命令还是很陌生(我相信你会说出来)。

标签: unix command-line awk centos ifs


【解决方案1】:
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

【讨论】:

  • 谢谢约翰,你不会相信我尝试的解决方案有多么相似,但我做错了一些事情。不过,你的工作就像一个魅力,而且很干净:)
猜你喜欢
  • 2015-06-02
  • 2012-09-17
  • 1970-01-01
  • 1970-01-01
  • 2022-11-14
  • 2015-06-07
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多