gpt4 book ai didi

linux - 为/etc/passwd 文件输出的每一行打印出名称

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:33:15 24 4
gpt4 key购买 nike

我有一个作业要从 /etc/passwd 文件中打印出有关用户的信息。我想要的是输出为列格式而不是行格式。

我设法做的是在 tr 命令的帮助下将所有内容打印在新行上,因此现在的输出如下所示。

user

x

1002

1002

/home/user

/bin/sh

但我想要的是这样的输出。

username user

password x

user id 1002

group id 1002

comment

directory /home/user

shell /bin/sh

我的代码现在是这样的

    grep user /etc/passwd | tr ':' '\n'

最佳答案

只需将 : 作为 IFS 值的文件进行解析即可。

wanted=user
grep ":$wanted:" /etc/passwd | # this grep alone not a great idea
while IFS=: read usr pswd uid gid cmnt dir shell;
do [[ "$usr" == "$wanted" ]] || continue # skip false hits
printf 'username %s\npassword %s\nuser id %s\ngroup id %s\n%s\ndirectory %s\nshell %s\n' "$usr" "$pswd" "$uid" "$gid" "$cmnt" "$dir" "$shell";
done

但是单独使用 grep 会给你错误的命中。我的第一个测试给了我 用户名 tss 当评论是 裤子包用来沙盒 tcsd 守护进程的帐户用户名 saslauth 当评论是 Saslauthd 用户

在它周围添加冒号可防止在我的密码文件中出现错误命中,但为了确定(r),在每次迭代时明确检查用户。

关于linux - 为/etc/passwd 文件输出的每一行打印出名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54006829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com