小编Mat*_*att的帖子

使用sed处理passwd文件

我正在尝试学习 sed,但遇到了很多麻烦。我想要做的是使用带有 sed 命令的 bash 脚本处理我的 passwd 文件以执行以下操作:对于组 ID 为 20000 的每个用户,将文件中的 GID 替换为 2000x,其中 x 是第一个字母的顺序用户的用户名(即:a 为 1,b 为 2 等)此外,对于默认 shell 为 bash 的每个用户,将其组更改为 bash,对于那些使用 shell tcsh 的用户,将其组更改为 tcshgroup。我已经在 awk 中完成了上述工作(我发现使用起来更容易),但我什至不知道从哪里开始使用 sed。任何帮助深表感谢。

这是 passwd 文件的一部分:

speech-dispatcher:x:108:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
colord:x:109:117:colord colour management daemon,,,:/var/lib/colord:/bin/false
lightdm:x:110:118:Light Display Manager:/var/lib/lightdm:/bin/false
avahi:x:111:120:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
hplip:x:112:7:HPLIP system user,,,:/var/run/hplip:/bin/false
pulse:x:113:121:PulseAudio daemon,,,:/var/run/pulse:/bin/false
saned:x:114:20000::/home/saned:/bin/tcsh
mmccormick:x:1000:20000:owner,,,:/home/mmccormick:/bin/bash
Run Code Online (Sandbox Code Playgroud)

理想情况下,我会选择每行的第 4 个字段来获取 shell 的组 ID 和第 7 个字段,但同样,我不知道在 sed 中执行此操作的方法。提前致谢。

bash sed

2
推荐指数
1
解决办法
5863
查看次数

标签 统计

bash ×1

sed ×1