我正在以编程方式删除 /etc/group 中的条目。
因为我不能在这个练习中使用 grep、cat 或 cut,所以我编写了自己的程序,它可以生成 stdout 和 stdout 数据来读取文件。如果你可以用 grep、awk、sed、cat、echo 等写出你的解决方案。我可以使用它。
我有 root 访问权限并且可以手动删除组,但由于 n 个组将包含一个“+”字符,我需要一个脚本来检查这个。
首先,我假设我可以在任何行中添加包括“+”的 #,但我现在确信这不是您以编程方式管理 /etc/groups 的方式。我还没有找到很好的文档,想知道这里是否有人对如何通过使用“+”字符来禁用被认为是“遗留”的组有更好的想法。
是的,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>
选项创建备份