LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1204|回复: 8

利用shell脚本修改/etc/passwd文件?[已解决]

[复制链接]
发表于 2004-2-26 11:41:04 | 显示全部楼层 |阅读模式
我想利用sed来为一个文件(其格式完全和/etc/passwd相同)进行修改,使得每一个用户的uid和gid都增加1,请大家多帮忙。我先谢了,鞠躬。。。
发表于 2004-2-26 16:39:40 | 显示全部楼层
use awk very easy!
  1. awk -F: 'BEGIN{OFS=":"}$3+=1,$4+=1' /etc/passwd
复制代码
发表于 2004-2-27 00:40:32 | 显示全部楼层
用sed也可以,不过效率极其低下 ;)
  1. while read i;do
  2.         a=$(echo $i|cut -f3 -d":")
  3.         b=$(echo $i|cut -f4 -d":")
  4.         echo $i|sed "s/${a}/$((a+1))/g;s/${b}/$((b+1))/g"
  5. done</etc/passwd
复制代码
 楼主| 发表于 2004-2-27 13:24:07 | 显示全部楼层

太感谢了。暴强,我笑,我喜,我大笑

最初由 javalee 发表
use awk very easy!
  1. awk -F: 'BEGIN{OFS=":"}$3+=1,$4+=1' /etc/passwd
复制代码


javalee兄太强了,十分仰慕.谢谢,真的!
 楼主| 发表于 2004-2-27 13:35:13 | 显示全部楼层

再请教javalee兄一个问题

在我的文件中,各行的帐号是从第一个帐号复制/粘贴而来的,所以各帐号的主目录是相同的,假如我已经把帐号名手工更改过来,那能否用awk根据帐号名把用户的主目录中/home/dir的dir改成和用户名相同呢?
 楼主| 发表于 2004-2-27 14:06:16 | 显示全部楼层

回复: 再请教javalee兄一个问题

javalee兄有时间的话,能否告诉我如何使用awk把各粘贴下来的用户名依次替换为指定的用户名呢?
发表于 2004-2-27 17:10:40 | 显示全部楼层

回复: 再请教javalee兄一个问题

最初由 dacheng 发表
在我的文件中,各行的帐号是从第一个帐号复制/粘贴而来的,所以各帐号的主目录是相同的,假如我已经把帐号名手工更改过来,那能否用awk根据帐号名把用户的主目录中/home/dir的dir改成和用户名相同呢?

是这个意思么?
before:
lee:x:501:501::/home/lee:/bin/bash
a:x:501:501::/home/lee:/bin/bash
b:x:501:501::/home/lee:/bin/bash
c:x:501:501::/home/lee:/bin/bash
d:x:501:501::/home/lee:/bin/bash
after:
a:x:501:501::/home/a:/bin/bash
b:x:501:501::/home/b:/bin/bash
c:x:501:501::/home/c:/bin/bash
d:x:501:501::/home/d:/bin/bash
发表于 2004-2-27 19:17:42 | 显示全部楼层
  1. awk -F: 'BEGIN{OFS=":"}{gsub(/\/home\/([a-z])+/,"/home/"$1);print}' urfile
复制代码
 楼主| 发表于 2004-2-29 19:42:16 | 显示全部楼层
对 javalee 的帮助非常感谢,真的给我帮大忙了,呵呵,javalee兄真是功力深厚,出手不凡,我一定要再多来看看这个版块
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表