shell 如何通过shell编程将shadow和passwd里面将账户号、密码和UID放在一起。 30

例如:passwd里的内容是:root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologinshadow里... 例如:passwd里的内容是:root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
shadow里的内容是:root:$1$/30QpE5e$y9N/D0bh6rAACBEz.hqo00:14126:0:99999:7:::
bin:*:14126:0:99999:7:::
如何组成新的内容是:root:$1$/30QpE5e$y9N/D0bh6rAACBEz.hqo00:0
bin:*:1
展开
 我来答
来自梅花山百年难遇的翠鸟
2014-01-14 · 超过34用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:69.1万
展开全部
思路是,将passwd的内容分域,将shadow内容同样分域,然后重新组合就行,简单的话,用cut来分域,或者用awk来分域,这个比较复杂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5311d79
2014-01-14 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3428万
展开全部

用awk可以同时处理两个文件的:

awk 'BEGIN{FS=OFS=":"}NR==FNR{w[$1]=$3}NR>FNR{for(a in w)if($1==a){print a,$2,w[a];break;}}' /etc/passwd /etc/shadow

FS, OFS, NR, FNR都是awk的内部变量,

awk每处理一行,NR(Number of Record)就增1;而FNR是跟文件相关联的,在处理一个文件时增1 ,换另一个文件就重新计数了。

NR==FNR表示正在处理第一个文件/etc/passwd

NR>FNR表示在处理第二个文件/etc/shadow

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式