自动删除 /etc/group 中的旧条目

自动删除 /etc/group 中的旧条目

我正在以编程方式删除 /etc/group 中的条目。

因为我不能使用 grep、cat 或 cut 来完成这个练习,所以我编写了自己的程序,它可以生成 std​​out 和 stdout 数据,本质上就是读取文件。如果你能用 grep、awk、sed、cat、echo 等编写解决方案,我就可以使用它。

我有 root 访问权限并可以手动删除组,但由于 n 组将包含“+”字符,因此我需要一个检查这一点的脚本。

起初我以为我可以用 # 附加任何行,包括“+”,但现在我确信这不是以编程方式管理 /etc/groups 的方式。我还没有找到很好的文档,想知道这里是否有人可能对如何通过使用“+”字符禁用被视为“遗留”的组有更好的想法。

答案1

是的,grep 的想法既快速又可靠。注意始终确保 /etc/group 文件存在。您可以将 grep 的输出保存在变量中,然后重写文件 :: newGroup=$(grep -v '+' /etc/group); echo "$newGroup" > /etc/group

您想删除所有包含+登录的行,/etc/groups
也许您想注释掉相关的行

尽可能快地grep -v '+' /etc/group完成工作,这里是:
- grep 模式文件重定向到相同文件必须使用中间文件
- /etc/group 可以备份但必须始终存在

更好的相同结果:sed -i.backup '/pattern/d' file
- 删除包含模式的行
- 创建备份文件

甚至更好:注释掉匹配的行并创建备份
sed '/pattern/s/^/#/' file-i<ext>选项

# As root

# GREP
cp /etc/group /etc/group_backup      # Create a backup /etc/group_backup
newGroup=$(grep -v '+' /etc/group)   # Save new file content to var
echo "$newGroup" > /etc/group        # Rewrite /etc/group file from var

# SED
sed -i_backup '/+/d' file            # /pattern/d : delete lines containing the pattern
                                     # -i<ext>    : save edited stream to file and create backup file<ext>

# SED comment out & backup
sed -i_backup '/+/s/^/#/' /etc/group

相关内容